温馨提示×

Linux Informix如何迁移

小樊
49
2026-08-15 19:51:33
栏目: 智能运维

在 Linux 环境下迁移 IBM Informix 数据库,常见场景包括:

  • 同版本迁移(如测试 → 生产)
  • 跨服务器迁移
  • 升级版本迁移
  • 更换存储路径或操作系统(仍保持 Linux)

下面按 最常用、最稳妥 的方式给你一个完整迁移方案,并附上注意事项。


一、迁移前准备

1. 确认环境信息

# Informix 版本
onstat -V

# 实例名
echo $INFORMIXSERVER

# 数据库列表
onstat -d

2. 检查空间与参数

  • 磁盘空间是否足够
  • 页大小(pagesize)是否一致
  • 字符集(locale)是否一致

二、迁移方式选择(推荐顺序)

场景 推荐方式
同版本、同平台 ontape / onbar 备份恢复
跨服务器、快速 dbexport / dbimport
表级迁移 unload / load
升级版本 升级迁移(inplace upgrade)

三、方式一:ontape 备份恢复(最常用 ✅)

1. 源库备份

ontape -s -L 0

会生成备份到 $INFORMIXDIR/backups 或配置路径

2. 拷贝备份文件到目标服务器

scp -r $INFORMIXDIR/backups target:/opt/informix/backups

3. 目标服务器准备

  • 安装 相同版本 Informix
  • 创建相同实例名
  • 初始化实例(oninit -i)

4. 恢复数据库

ontape -r

✅ 优点:

  • 完整、可靠
  • 包含系统库、权限、配置

⚠️ 注意:

  • 版本必须一致
  • 字符集、页大小必须一致

四、方式二:dbexport / dbimport(最灵活 ✅)

1. 导出数据库

dbexport dbname -o /backup/dbexport

2. 拷贝到目标服务器

scp -r /backup/dbexport target:/data/dbexport

3. 导入数据库

dbimport dbname -i /data/dbexport

✅ 优点:

  • 可跨服务器
  • 可修改路径、页大小

⚠️ 注意:

  • 不支持 blob 的复杂场景
  • 需要重新建库

五、方式三:表级迁移(unload / load)

适合 部分表迁移

1. 导出

unload to table.unl select * from table;

2. 导入

load from table.unl insert into table;

或:

dbload -d dbname -c load.ctl

六、迁移后检查

1. 启动实例

oninit -v

2. 检查数据库

onstat -d
onstat -u

3. 校验数据

SELECT COUNT(*) FROM table;

七、常见坑点(非常重要 ⚠️)

1. 字符集不一致

export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8

2. 页大小不一致

  • 页大小不同 无法恢复
  • 只能在 dbimport 时重建

3. 权限丢失

  • dbimport 后需重新授权
GRANT SELECT ON table TO user;

八、迁移方案推荐总结

生产环境迁移首选ontape
跨环境/灵活迁移dbexport/dbimport
表级迁移unload/load


如果你愿意,可以告诉我:

  • Informix 版本
  • 是否跨服务器
  • 是否升级版本
  • 数据量大小

我可以给你 定制迁移方案 + 命令清单

0