Debian 环境下 Informix 数据库迁移指南
一 迁移方案总览
- 物理迁移:使用 ontape 或 onbar 进行实例级/数据库级备份与恢复,适合同版本、同平台或兼容平台之间的快速迁移,停机时间短,但要求存储与路径规划兼容。
- 逻辑迁移:使用 dbexport/dbimport 导出为文本(含建库/建表 DDL 与数据),在目标端重建对象后导入,适合跨小版本、跨平台或需要改造结构的场景,灵活度高。
- ETL/应用侧迁移:通过 ETL 工具或应用双写/分批同步,适合异构目标(如 Oracle/PostgreSQL)或需要零停机窗口的复杂场景。
- 迁移前务必完成:版本与特性兼容性评估、完整备份、目标环境容量与 I/O 评估、回滚预案与演练。
二 迁移前准备
- 环境一致性:确认 Informix 版本、操作系统位数、页大小(page size)、字符集/地域(DB_LOCALE/CLIENT_LOCALE) 等一致或兼容;不一致需在导入阶段显式处理字符集与排序规则。
- 账户与权限:准备具有 DBA 权限的账户,用于导出/导入与对象创建。
- 资源与空间:目标端磁盘空间需覆盖导出文件、导入临时空间与目标库数据;网络带宽与传输时间需提前评估。
- 网络与连通:开放 SQLHOSTS 中定义的端口(常见为 1526/tcp),确保源/目标实例互相可达。
- 备份与回滚:在源端执行全量备份(如 ontape -s -L 0),并保留最近可用备份与逻辑导出,以便回滚。
三 迁移步骤
- 方案A 物理迁移(ontape/onbar,适合同版本/同平台)
- 源端备份:执行 ontape -s -L 0 进行零级备份;如使用 onbar,按存储管理器策略执行备份。
- 传输备份:将备份介质/目录安全复制到目标端相同路径或按策略可访问位置。
- 目标端恢复:使用 ontape -r 恢复;如使用 onbar,按存储管理器策略执行恢复。
- 校验:启动实例后检查 online.log、表与索引可用性、统计信息。
- 方案B 逻辑迁移(dbexport/dbimport,适合跨版本/跨平台/需改造)
- 导出源库:执行 dbexport -o <导出目录> ;如需包含存储过程/触发器/授权等,使用 dbschema 导出对象定义。
- 目标端准备:安装同版本(或兼容版本)Informix,配置 ONCONFIG/SQLHOSTS/DB_LOCALE/CLIENT_LOCALE,创建目标数据库(如 create database with log)。
- 调整导出产物:将生成的 .exp 目录与 .sql 按目标库名与路径调整;如跨字符集,必要时调整 DB_LOCALE/CLIENT_LOCALE 并在导入前转换数据文件编码。
- 导入数据:执行 dbimport -i <导出目录> [-d <目标表空间>];导入完成后执行 UPDATE STATISTICS 收集统计信息。
- 校验:比对行数、主键/唯一约束、外键、索引、触发器与存储过程,抽样查询验证数据一致性。
四 迁移后验证与切换
- 数据一致性:对关键表进行全量/抽样比对(COUNT、SUM、主键范围),对大表可基于 分片键/时间范围 分段校验。
- 功能与性能:回归核心业务路径,执行性能基准测试(响应时延、吞吐、锁等待),必要时调整 缓冲池、日志、索引与统计信息。
- 应用切换:优先采用 灰度/蓝绿 或 双写 策略,先小流量验证,再逐步切换;保留回滚窗口与回滚脚本。
- 监控与优化:上线后持续监控 online.log、会话、锁、I/O 与空间使用,按需执行重组与统计信息更新。
五 常见问题与排错要点
- 字符集不匹配:导入乱码或比较异常时,核对 DB_LOCALE/CLIENT_LOCALE,必要时在导出前/导入后转换文件编码,或在目标端设置一致的地域。
- 版本/特性不兼容:跨版本迁移失败或对象创建报错时,优先使用与目标端一致的 Informix 版本;对不兼容特性(如新类型/新语法)在导入前改造 DDL。
- 空间不足:导入中断或性能极差时,检查 临时表空间、消息日志、表空间碎片,并预留充足磁盘。
- 对象缺失:仅导入数据未导入对象时,使用 dbschema 补齐 视图/存储过程/触发器/授权 等定义。
- 日志与权限:导入/恢复失败多与 权限不足、路径不可写、实例未正确初始化 有关;检查 online.log、目录权限与实例状态。