在 Ubuntu 下迁移 IBM Informix 数据库,常见场景有几种,不同场景做法不一样。下面给你一个通用、实战型迁移指南,覆盖最常见的 同版本 / 跨版本 / 跨服务器迁移。
# Informix 版本
onstat -V
# 操作系统
lsb_release -a
| 项目 | 说明 |
|---|---|
| INFORMIXDIR | Informix 安装目录 |
| INFORMIXSERVER | 实例名 |
| ONCONFIG | 配置文件 |
| 数据库空间 | rootdbs / datadbs |
| 字符集 | DB_LOCALE / CLIENT_LOCALE |
强烈建议:源库和目标库字符集一致
dbexport / dbimport(最常用 ✅)适合:
# 切换到 informix 用户
su - informix
# 导出数据库
dbexport dbname -o /backup/ifx_export
导出后目录结构:
/backup/ifx_export/
├── dbname.sql
├── dbname.unl
scp -r /backup/ifx_export user@target:/data/ifx_import
dbimport dbname \
-i /data/ifx_import \
-d datadbs \
-l buffered
参数说明:
-d:指定数据空间-l buffered:使用 buffered logging(生产推荐)✅ 优点
❌ 缺点
ontape 备份恢复(物理迁移)适合:
ontape -s -L 0
备份路径由 TAPEDEV 决定。
scp $INFORMIXDIR/backups/tape0 target:/ifx/backup
ontape -r
⚠️ 要求:
onunload / onload(表级)适合:
# 导出
onunload -t /tmp/tab.unl dbname:tabname
# 导入
onload -t /tmp/tab.unl dbname
⚠️ 不推荐用于整库迁移
✅ 但可用 RHEL/CentOS 兼容方式运行
建议:
sudo apt install libaio1 libncurses5
# 示例
echo "kernel.shmmax = 1073741824" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
groupadd informix
useradd -g informix informix
onstat -
onstat -d
onstat -u
验证数据:
SELECT COUNT(*) FROM tabname;
| 场景 | 推荐方式 |
|---|---|
| 数据库迁移 | ✅ dbexport/dbimport |
| 整机实例迁移 | ✅ ontake |
| 单表迁移 | onunload/onload |
| 跨版本 | dbexport(最安全) |
你可以直接告诉我:
我可以给你 一步一步的命令级迁移方案 ✅