Ubuntu 上 Informix 迁移实操指南
一 迁移方案选择
- 逻辑迁移:使用 dbexport/dbimport 导出为文本(含建库/建表/数据脚本),跨小版本、跨平台通用,便于审计与改造,适合大多数场景。
- 物理迁移:使用 ontape/onbar 进行二进制备份与恢复,停机时间短,要求版本与目标环境高度一致(同大版本、同平台更佳)。
- 混合方案:用 dbschema 先迁移对象定义,再用 HPL/dbload 或外部 ETL 加载数据,适合做结构改造与清洗。
- 迁移前务必评估源/目标 Informix 版本兼容、字符集、存储路径、网络与权限,并制定回滚与验证计划。
二 标准流程 逻辑迁移 dbexport dbimport
- 源端准备
- 以 informix 用户执行:
dbexport -o /informix_export/stores7 stores7
如需同时导出存储过程/触发器/授权等,可配合 dbschema -d stores7 -f all -p all -r all 生成对象脚本。
- 备份配置与网络:
- 配置文件:$INFORMIXDIR/etc/onconfig、$INFORMIXDIR/etc/sqlhosts
- 环境变量:INFORMIXSERVER、DBSERVERNAME、DB_LOCALE、CLIENT_LOCALE
- 校验导出目录(如 stores7.exp)与文件权限。
- 目标端部署
- 安装同版本 Informix,创建 informix 用户与目录,设置环境变量(示例):
INFORMIXDIR=/opt/IBM/informix
INFORMIXSERVER=pdc
ONCONFIG=onconfig.std
DB_LOCALE=zh_cn.gb
CLIENT_LOCALE=zh_cn.gb
PATH=$INFORMIXDIR/bin:$PATH
- 编辑 $INFORMIXDIR/etc/sqlhosts 与 /etc/services(如添加端口 1526/tcp),确保监听可达。
- 初始化实例(首次):oninit -ivy;仅启动:oninit。
- 目标端导入
- 将 stores7.exp 复制到目标(如 /informix_import/)。
- 如需自定义表空间,先创建:
onspaces -c -d <tbsp_name> -p <path.dbf> -o <offset_kb> -s <size_kb>
- 导入:
dbimport stores7 -i /informix_import -d <tbsp_name>
若导出时用了 -ss,导入脚本中已含存储参数,可按需调整。
- 导入后建议做物理日志备份:
ontape -s -B stores7
- 验证
- 连接校验:dbaccess stores7 -
- 抽样查询与计数对比(行数、主外键、唯一性、空值约束)。
- 应用回归测试与性能基线对比。
三 标准流程 物理迁移 ontape onbar
- 源端备份
- 零级备份:ontape -s -L 0
- 归档日志:按需执行 ontape -a(确保日志连续)。
- 目标端恢复
- 安装同版本 Informix 并初始化实例(oninit -ivy)。
- 恢复:ontape -r(按提示选择恢复级别与归档路径)。
- 恢复后校验:onstat - 检查数据库状态与日志模式。
- 适用要点
- 停机窗口可控、版本/平台一致时优先;跨平台或版本差异较大时不建议使用。
四 关键配置与常见问题
- 字符集与语言环境
- 保持 DB_LOCALE/CLIENT_LOCALE 与源端一致(如 zh_cn.gb 或 EN_US.819),避免乱码与比较规则差异。
- 监听与连接
- 核对 sqlhosts 协议(onsoctcp/ontlitcp)、主机、服务名;/etc/services 端口(常见 1526/tcp)未被占用。
- 表空间与路径
- 若目标磁盘布局不同,导入前用 onspaces 预建表空间,并在 dbimport -d 指定;导出目录名与脚本中的数据库名需一致或手动修正。
- 日志与一致性
- 导入后执行 ontape -s -B 启用/补齐物理日志,确保可前滚恢复。
- 常见报错速查
- “INFORMIXSERVER 与 DBSERVERNAME 不匹配”:核对环境变量、onconfig 的 DBSERVERNAME 与 sqlhosts 条目。
- “共享内存初始化失败”:检查 online.log,确认 rootdbs 存在且权限为 660,必要时 touch 并 chmod。
- “onmonitor 终端类型未知”:设置 TERMINFO 与 TERMCAP 指向 $INFORMIXDIR/etc。
五 迁移后验证与回滚
- 数据一致性
- 对象计数、主键/唯一约束、外键、检查约束、触发器执行结果对比。
- 抽样业务查询与关键报表结果比对。
- 性能与稳定性
- 执行基准查询/批处理,观察 onstat -g perf 与逻辑/物理日志写入情况,必要时调优缓冲池与日志参数。
- 应用与运维
- 更新应用连接串(主机、端口、服务名),验证连接池与超时设置。
- 建立监控告警与备份策略(如每日增量、每周全备)。
- 回滚预案
- 保留源端备份与最近一次可用 ontape 磁带/目录;逻辑迁移保留 dbexport 产物;出现异常按窗口快速回切。