温馨提示×

centos中informix如何迁移

小樊
47
2026-09-24 06:12:14
栏目: 智能运维

在 CentOS 下迁移 IBM Informix 数据库,常见场景主要有三类:

  1. 同版本 / 跨主机迁移(最常用)
  2. 版本升级迁移
  3. 数据导出再导入(异构或安全迁移)

下面按实战路线说明,适合运维和 DBA 使用。


一、迁移前准备(必做)

1. 确认环境信息

onstat -
onmode -version

记录:

  • Informix 版本
  • 实例名(INFORMIXSERVER)
  • 数据库名
  • 字符集(DB_LOCALE / CLIENT_LOCALE)

2. 备份原库(非常重要)

ontape -s -L 0
# 或
onbar -b -L 0

确保有完整 0 级备份。


二、方式一:整机/同版本迁移(推荐)

适用场景

  • CentOS → CentOS
  • 同 Informix 版本
  • 停机可接受

步骤

1. 停原库

onmode -ky

2. 拷贝核心目录

tar czvf ifx.tar.gz \
  $INFORMIXDIR \
  /var/lib/informix \
  /etc/informix

3. 目标机安装同版本 Informix

./ids_install

4. 恢复文件

tar xzvf ifx.tar.gz -C /

5. 修改配置文件

  • sqlhosts
  • onconfig
  • 检查 IP、路径、chunk 文件

6. 启动数据库

oninit -vy

✅ 优点:最快、最完整
❌ 缺点:版本必须一致


三、方式二:使用 dbexport / dbimport(通用)

适合

  • 跨小版本
  • 表结构 + 数据迁移
  • 不迁移实例配置

1. 导出数据库

dbexport dbname -ss

生成:

dbname.exp/
  dbname.sql
  *.unl

2. 拷贝到目标机

scp -r dbname.exp root@newhost:/data/

3. 导入数据库

dbimport dbname -i /data

✅ 支持字符集转换
❌ 不支持存储过程/触发器完全兼容(需检查)


四、方式三:使用 unload / load(细粒度)

导出表

unload to table.unl
select * from table;

导入表

load from table.unl
insert into table;

适合:

  • 单表迁移
  • 数据清洗

五、CentOS 特有问题注意

1. 依赖库

ldd $INFORMIXDIR/bin/oninit

常见缺:

  • libncurses
  • libaio

2. SELinux

setenforce 0
# 或
semanage fcontext ...

3. 防火墙

firewall-cmd --add-port=9088/tcp --permanent
firewall-cmd --reload

六、迁移后校验

onstat -
oncheck -ci
oncheck -cI

数据校验:

SELECT COUNT(*) FROM table;

七、推荐方案总结

场景 推荐方式
同版本整机 文件拷贝
跨版本 dbexport/dbimport
单表 unload/load
升级 官方升级指南

如果你能告诉我:

  • Informix 版本
  • 源/目标 CentOS 版本
  • 是否同版本

我可以给你更精确的迁移命令清单。

0 踩