温馨提示×

linux informix怎么迁数据

小樊
37
2026-10-16 17:03:49
栏目: 智能运维

在 Linux + Informix 环境下“迁数据”,通常分为几种场景,我先按最常见的迁移方式给你讲,再给你具体命令示例。你可以对照自己的情况选。


一、最常见的迁移方式(推荐)

场景 1:同版本 / 跨服务器迁移(最常用)

✅ 使用 dbexport / dbimport

1️⃣ 源库导出

dbexport dbname -o /opt/ifmx/exp
  • dbname:数据库名
  • 生成目录:/opt/ifmx/exp/dbname.exp

目录里包含:

  • dbname.sql(表结构)
  • *.unl(数据)

2️⃣ 拷贝到目标服务器

scp -r /opt/ifmx/exp/dbname.exp user@target:/opt/ifmx/exp/

3️⃣ 目标库导入

dbimport dbname -i /opt/ifmx/exp

⚠️ 注意:

  • 字符集要一致
  • 目标库不能已存在

场景 2:只迁表数据(已有结构)

✅ 使用 unload / load

源库

UNLOAD TO '/opt/ifmx/t1.unl'
SELECT * FROM tab1;

目标库

LOAD FROM '/opt/ifmx/t1.unl'
INSERT INTO tab1;

适合:

  • 单表
  • 增量数据

场景 3:跨版本 / 跨平台

✅ 使用 onunload / onload(不推荐跨大版本)

onunload -t /dev/st0 dbname
onload -t /dev/st0

⚠️ 限制很多,一般不用


场景 4:实时 / 生产不停机

✅ 使用:

  • Informix HDR
  • Enterprise Replication (ER)

适合:

  • 容灾
  • 异地同步

二、迁移前必查项(很重要)

onstat -V        # 版本
onstat -g cfg    # 配置
locale           # 字符集

常见字符集问题:

  • en_US.819
  • zh_CN.UTF8

不一致会导致导入失败或乱码。


三、常见坑

❌ dbimport 报错:数据库已存在
✅ 先 drop database dbname;

❌ 权限不足
✅ informix 用户执行

❌ 表空间不存在
✅ 提前创建 dbspace


四、你可以告诉我

为了给你更精确的步骤,请补充:

  1. Informix 版本(onstat -V)
  2. 是否同版本?
  3. 是否整库还是部分表?
  4. 是否允许停库?

我可以直接给你 一步一步可执行的脚本。

0 踩