温馨提示×

centos informix数据迁移方案

小樊
35
2026-01-02 04:44:29
栏目: 智能运维

CentOS 环境下 Informix 数据迁移方案

一 方案总览与选型

  • 迁移前先做三件事:明确版本与平台差异(如 Informix 版本、OS 位数、字符集 CLIENT_LOCALE/DB_LOCALE)、梳理对象与依赖(表、索引、触发器、视图、存储过程、同义词、序列、分片/分区、外键、BLOB/CLOB、权限与属主)、制定回滚与窗口计划(停写窗口、校验口径、备份策略)。
  • 方法选型建议如下:
方法 适用场景 停机窗口 优点 注意点
物理迁移(ontape/onbar 备份还原) 同版本、跨主机/跨存储迁移 短(仅备份与恢复) 速度快、一致性好 版本/平台需兼容,目录与空间规划要一致或可映射
逻辑迁移(dbexport/dbimport) 跨小版本/跨平台/结构调整 较长(导出+导入) 可重排对象与空间、灵活 DDL 细微差异需人工修订,导入期需充足日志与磁盘
混合迁移(结构用 dbschema,数据用 unload/load) 大表分批、选择性迁移 可控(分批) 对业务影响小、易回滚 需处理约束顺序、触发器/同义词依赖、字符集与空值

上述步骤与取舍要点为 Linux 上 Informix 迁移的通用实践,包含环境准备、备份与迁移方法选择、结构/数据迁移与验证等关键环节。

二 标准流程与命令示例

  • 准备与评估
    • 收集环境信息:执行 onstat -V、onstat -d、onstat -l、onconfig、sqlhosts、环境变量(如 INFORMIXDIR/INFORMIXSERVER/LANG/CLIENT_LOCALE/DB_LOCALE)。
    • 目标端安装同版本或兼容版本的 Informix,按源端规划 dbspaces/chunks 与目录权限(常见权限为 660),并初始化实例。
  • 物理迁移(同版本优先)
    • 源端备份:ontape -s -L 0 -t STDIO | gzip > db_full.bak.gz(或 onbar 全备);传输至目标端。
    • 目标端恢复:先停止实例(onmode -ky),按需要放置 chunk 文件,恢复:gunzip < db_full.bak.gz | ontape -p;恢复后 onmode -m 拉起。
  • 逻辑迁移(dbexport/dbimport)
    • 源端导出:dbexport -o /data/exp/mydb -ss mydb(生成 mydb.exp/ 与 mydb.sql)。
    • 目标端准备空间:onspaces -c -d mydbs -p /infdata/mydbs.dbf -o 0 -s 20000000(示例 20GB);必要时设置权限 660
    • 目标端导入:dbimport mydb -i /data/exp -d mydbs -c;导入后执行 update statistics; 提升执行计划质量。
  • 混合迁移(结构+分批数据)
    • 导出结构:dbschema -d mydb -t all -o mydb_schema.sql;在目标端 dbaccess mydb mydb_schema.sql。
    • 批量导出数据:生成脚本 unload_*.sh(select ‘unload to ‘’/data/out/’||tabname||‘.txt’’ select * from ‘||tabname||’;’ from systables …),执行后传至目标端。
    • 批量导入数据:生成脚本 load_*.sh(select ‘load from ‘’/data/in/’||tabname||‘.txt’’ insert into ‘||tabname||’;’ …),导入后按需重建索引/启用约束。
  • 字符集与依赖
    • 若源/目标字符集不同,需在两端设置 CLIENT_LOCALE/DB_LOCALE 一致,必要时在 sqlhosts/环境变量中声明;跨库同义词、视图、触发器需按依赖顺序创建。
      以上流程与命令示例涵盖 dbexport/dbimport、onspaces、update statistics、权限与字符集设置等要点,适用于 CentOS 上的常见迁移场景。

三 常见报错与处理要点

  • 导出/导入时被会话阻塞
    • 现象:dbexport 报连接锁。处理:停应用或用 onstat -g sql 查找会话,必要时 onmode -z 终止,再执行导出/导入。
  • 逻辑日志不足导致长事务
    • 现象:dbimport 报长事务。处理:临时增大逻辑日志或去掉 -l buffered 参数;导入完成后再用 ontape -s -U dbname 补齐日志。
  • 表空间与权限问题
    • 现象:onspaces 创建失败或导入报权限/路径错误。处理:预先创建数据文件,权限设为 660,路径与 onconfig 中配置一致。
  • DDL 细微差异与依赖顺序
    • 现象:导入 SQL 语法错误或同义词/外键依赖失败。处理:修订 .sql 中的对象定义,按“表→索引→约束→触发器→视图/同义词”的顺序导入。
  • 字符集/空值导致数据截断或乱码
    • 现象:部分表导入不完整或中文异常。处理:统一 CLIENT_LOCALE/DB_LOCALE,检查字段长度与空值约束,必要时调整 unload/load 格式或先小表验证。
      以上问题均为实际迁移高频痛点,按对应措施处理可显著提升成功率。

四 迁移后验证与切换上线

  • 数据一致性
    • 行数与关键指标对账:按业务主键/分区对比 count(*)、sum() 等聚合;抽样校验明细。
    • 大对象与特殊类型:抽查 BLOB/CLOB、时间精度、时区相关字段。
  • 性能与对象
    • 执行计划与索引:对比 explain 输出,必要时收集统计信息(update statistics)、重建或重组索引。
    • 依赖与权限:复核视图/触发器/同义词、角色与属主、默认权限。
  • 应用切换
    • 双写/灰度:先短时分批双写,观察错误与延迟;再切换连接串并保留回滚窗口。
  • 备份与监控
    • 完成切换后执行一次全备(如 ontape -s -B dbname),并加强错误日志与锁等待监控。
      这些验证与切换动作可确保迁移后系统的稳定性与可用性,并降低回滚成本。

0