Linux 上 Informix 数据迁移实操指南
一 迁移方式选型
- 物理迁移(ontape / onbar):适合同版本、同平台或兼容平台之间的整库快速迁移,停机时间短,要求存储与路径布局可复用或可调。
- 逻辑迁移(dbexport / dbimport):跨小版本/跨平台通用,便于在导入前调整对象定义,但大数据量时整体耗时更长。
- 卸载/装载族(unload / load、dbload、external table、HPL):适合大表按表/分区迁移,灵活控制批次与并行度。
- ETL/第三方复制:适合异构目标(如 Oracle/MySQL)或需要持续增量同步的场景,需处理数据类型与字符集映射。
二 标准流程与关键命令
- 环境准备
- 核对源/目标 Informix 版本、实例配置、字符集、页大小(如 4KB/8KB)、时区;准备同等或更高规格的硬件与存储。
- 在两端创建所需账号并授予权限;规划迁移窗口与回退方案。
- 结构迁移
- 使用 dbschema 导出表、索引、触发器、存储过程等 DDL,按目标环境做必要调整(如数据类型、长度、约束、分区、索引策略)。
- 在目标端用 dbaccess 或脚本执行 DDL,先行创建空库与对象。
- 数据迁移(示例)
- 整库逻辑导出/导入:
- 导出:
dbexport -d your_database -o /path/to/export
- 导入:
dbimport -d new_database -i /path/to/export -c -l buffered update statistics
- 大表批量迁移(示例思路):
- 源端按表卸载:
unload to '/data/tab1.unl' select * from tab1;
- 目标端装载:
load from '/data/tab1.unl' insert into tab1;
- 应用与连接串切换
- 更新 DBSERVERNAME / INFORMIXSERVER、主机、端口、数据库名;校验 SQL 方言差异(如分页、函数、序列/自增)。
- 校验与收尾
- 校验行数、主键/唯一约束、外键、触发器执行结果、重要业务视图与存储过程;按需执行
update statistics 并收集性能基线。
三 常见场景与命令清单
| 场景 |
主要工具 |
关键命令示例 |
适用要点 |
| 同版本整库快速迁移 |
ontape / onbar |
ontape -s -L 0 备份;目标端 ontape -r 恢复 |
停机短;路径/设备需兼容或可调 |
| 跨小版本/跨平台迁移 |
dbexport / dbimport |
dbexport -d db -o dir;dbimport -d newdb -i dir -c -l buffered update statistics |
便于改 DDL;大数据量耗时长 |
| 大表批量迁移 |
unload / load、dbload、external table、HPL |
unload to 't.unl' select * from t;;load from 't.unl' insert into t; |
可控批次/并行;适合 TB 级表 |
| 异构目标迁移 |
ETL/第三方复制 |
配置 JDBC/队列与映射规则 |
需处理字符集/类型映射与增量同步 |
四 关键注意事项
- 版本与兼容性:尽量保持源/目标 Informix 版本一致;跨版本需评估特性差异与 SQL 兼容性。
- 字符集与转码:跨字符集(如 en_US.819 与 UTF-8/GBK)需明确转码策略,避免中文截断或乱码;异构迁移时字段长度可能需扩大。
- 存储与空间:预估导出文件、装载中间文件与目标数据空间;确保磁盘 I/O 与带宽满足窗口要求。
- 对象与定义:索引/约束/触发器/序列/分区的创建顺序与依赖;必要时在导入后重建或收集统计信息。
- 锁定与并发:导出/导入阶段控制会话与锁,避免影响业务;大数据量建议分批与限流。
- 权限与安全:两端账号权限、目录与文件权限(如 660)、传输加密与校验。
- 回退预案:保留源库只读窗口与最近备份,确保异常可快速回切。
五 迁移后验证与性能优化
- 数据一致性:对比关键表行数与聚合校验(SUM/COUNT 等);抽样比对明细;验证外键与唯一性约束。
- 功能与回归:核心业务流与报表回归;检查存储过程/触发器/视图执行结果。
- 统计与执行计划:执行
update statistics,对比关键 SQL 执行计划与基线,必要时调整索引与参数。
- 监控与告警:迁移后持续监控会话、锁、I/O、空间与长事务,及时优化与扩容。