温馨提示×

ubuntu informix怎么迁移数据

小樊
41
2026-10-19 21:44:54
栏目: 智能运维

在 Ubuntu 上迁移 IBM Informix 数据库数据,常见做法有几种,具体取决于你是要同版本迁移、跨版本迁移、还是跨平台迁移。下面按实用场景给你一个清晰方案。


一、迁移前准备(必须)

1. 确认环境

onstat -V
onmode -V

确认源库和目标库的:

  • Informix 版本
  • 字符集(DB_LOCALE / CLIENT_LOCALE)
  • 操作系统(Ubuntu 版本)

2. 备份(强烈建议)

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

二、常用迁移方式(推荐)

✅ 方式一:dbexport / dbimport(最常用)

适合:整库迁移、跨平台(Linux ↔ Linux)

1. 源库导出

dbexport dbname -o /tmp/export_dir

导出内容:

  • 表结构
  • 数据
  • 索引、权限

2. 拷贝到目标 Ubuntu

scp -r /tmp/export_dir user@target:/tmp/

3. 目标库导入

dbimport dbname -i /tmp/export_dir

⚠️ 注意:

  • 数据库名可不同
  • 字符集必须兼容
  • 用户权限需提前创建

✅ 方式二:unload / load(表级迁移)

适合:部分表、大表、灵活控制

1. 源库导出

dbaccess dbname <<EOF
unload to '/tmp/tab.unl'
select * from tabname;
EOF

2. 目标库导入

dbaccess dbname <<EOF
load from '/tmp/tab.unl'
insert into tabname;
EOF

优点:

  • 可控
  • 可增量

缺点:

  • 不支持自动建表
  • 需要手动处理结构

✅ 方式三:onunload / onload(二进制)

适合:同版本 Informix 快速迁移

onunload dbname
onload dbname

⚠️ 限制:

  • 版本必须一致
  • 平台最好一致

✅ 方式四:ETL / 外部工具(高级)

  • Informix → MySQL / PostgreSQL
  • 使用:
    • Informix JDBC
    • Pentaho
    • DataStage
    • 自写 Python / Java 程序

三、Ubuntu 特有注意事项

1. 用户和组

Informix 一般跑在 informix 用户下:

id informix

2. 环境变量

export INFORMIXDIR=/opt/ibm/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
export DB_LOCALE=en_US.utf8

3. 文件权限

导出的 .unl 文件必须能被 informix 用户读取。


四、常见坑

❌ 字符集不一致 → 导入乱码
❌ 表空间不存在 → 导入失败
❌ 用户不存在 → 权限丢失
❌ Ubuntu SELinux/AppArmor 限制文件访问


五、推荐方案总结

场景 推荐方式
整库迁移 dbexport / dbimport
单表迁移 unload / load
同版本快速迁移 onunload / onload
异构数据库 JDBC / ETL

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

  • Informix 版本
  • 源 / 目标是否都是 Ubuntu
  • 是否同版本
  • 数据量大小

我可以直接给你可执行的迁移命令脚本。

0 踩