Linux 上升级 IBM Informix 的实操指南
一 升级前准备
- 明确升级路径与兼容性:确认当前与目标 Informix 主版本/次版本,并查阅 IBM 对应版本的发行说明与兼容性矩阵。例如,Client SDK 4.10.xC12 兼容数据库服务器 11.50、11.70、12.10,这有助于判断客户端/驱动是否需要同步升级。
- 完整备份:对数据库与实例环境做一次可验证的备份(物理/逻辑皆可),包含 $INFORMIXDIR、配置文件(如 onconfig、sqlhosts)、逻辑日志、存储路径等,并保留回滚方案。
- 健康检查与窗口规划:在业务低峰期执行,确保磁盘空间、内存、I/O 充足;检查 检查点、逻辑日志、表空间、备份状态 等,避免在异常状态下升级。
- 升级方式选择:
- 就地升级(In-place):复用现有数据文件,步骤少、风险相对可控,但要求版本跨度受官方支持。
- 非就地升级(Non-in-place):新目录/新实例部署,导入导出或迁移数据,安全性更高,适合跨大版本或重大变更。
二 标准升级步骤
- 版本与状态确认
- 查看版本与实例状态:
onstat -(或 dbaccess 中执行 SELECT DBINFO('version','full') FROM systables WHERE tabid = 1;)、onstat -d、onstat -l。
- 备份与冻结业务
- 完成全量备份;如采用逻辑迁移,提前冻结写入或使用一致性快照。
- 停止实例
- 优雅停机:
onmode -ky(确保无活跃会话与长事务)。
- 安装新版本软件
- 在 新目录 解压并安装 IBM Informix(避免覆盖旧版本),或按官方安装器指引执行升级模式安装。
- 迁移与合并配置
- 按需合并 onconfig 参数(新增参数使用默认值,谨慎调整路径/内存/并行度等),同步 sqlhosts、环境变量(如 INFORMIXDIR、PATH、LD_LIBRARY_PATH)。
- 执行升级操作
- 就地升级:启动到 单用户模式 执行升级脚本/命令(以官方文档为准),完成后重启到在线模式。
- 非就地升级:在新实例中导入导出/迁移数据(如使用 dbexport/dbimport 或备份恢复流程),校验对象与数据一致性。
- 启动与验证
- 启动:
oninit;检查:onstat -(应显示新版本)、onstat -g cfg、onstat -l、onstat -d。
- 应用回归测试
- 回归核心业务 SQL、存储过程、触发器、JDBC/ODBC/ESQL 连接、复制/高可用组件,关注性能与告警。
三 就地与非就地升级对比
| 维度 |
就地升级(In-place) |
非就地升级(Non-in-place) |
| 数据文件 |
复用现有数据文件 |
使用新目录/新文件 |
| 停机时间 |
一般更短 |
一般更长(含导出/导入) |
| 风险 |
依赖官方支持跨度,回滚需有旧版本环境 |
隔离性好,回滚容易 |
| 适用场景 |
小版本升级、环境受限 |
跨大版本、结构变更、风险隔离 |
四 升级后验证与常见问题
- 版本与实例健康
- 确认版本号、运行模式、共享内存、逻辑日志与表空间状态:
onstat -、onstat -g cfg、onstat -l、onstat -d。
- 客户端/驱动兼容
- 若升级数据库服务器,同步评估 JDBC/ODBC/ESQL/C 等客户端驱动版本;例如 Client SDK 4.10.xC12 兼容 11.50/11.70/12.10 服务器,避免连接异常。
- 连接与网络
- 校验 sqlhosts 配置、端口连通性、DNS/防火墙策略;必要时查看 $INFORMIXDIR/log 下相关日志定位问题。
- 功能与性能回归
- 重点回归业务关键路径、索引/统计信息、触发器与存储过程、复制/高可用链路,并进行基准性能对比。
五 回滚与最小化风险建议
- 回滚预案:保留旧版本 $INFORMIXDIR 与实例目录,备份关键配置;出现问题立即切回旧实例(停止新实例、恢复配置与数据文件、启动旧实例)。
- 分阶段上线:优先在 测试/预发 环境演练全流程,再灰度到生产;升级窗口避开业务高峰,并准备应急联系人。
- 严格遵循官方文档:不同版本(如 11.70 → 12.10 或跨多个次版本)步骤与限制可能不同,务必以 IBM 对应版本的发行说明与安装/升级指南为准。