Informix 数据库在 Linux 环境下的数据迁移可以通过多种方式实现,以下是几种常用的方法及其详细步骤:
# 停止应用连接
# 检查数据库状态
onstat -
# 创建卸载目录
mkdir -p /informix/backup/unload
chown informix:informix /informix/backup/unload
# 卸载整个数据库
onunload -c /informix/backup/unload/db_unload -L /informix/backup/unload/db_unload.log -t /informix/backup/unload/db_unload.temp -D database_name
# 或卸载特定表
onunload -c /informix/backup/unload/table_unload -t /informix/backup/unload/table_unload.temp database_name:table_name
scp /informix/backup/unload/* target_server:/informix/backup/load/
# 创建数据库(如果不存在)
dbaccess - <<EOF
CREATE DATABASE database_name WITH LOG;
EOF
# 加载数据
onload -c /informix/backup/load/db_unload -L /informix/backup/load/db_load.log -D database_name
# 导出整个数据库
dbexport database_name -o /informix/backup/export -ss
# 参数说明:
# -o 指定输出目录
# -ss 导出服务器信息(用户、权限等)
rsync -avz /informix/backup/export target_server:/informix/backup/import
# 在目标服务器上执行
dbimport database_name -i /informix/backup/import -d target_dbspace -l buffered
# 编辑 $INFORMIXDIR/etc/$ONCONFIG 文件
TAPEDEV /informix/backup/tape
LTAPEDEV /informix/backup/logtape
ontape -s -L 0
# 或使用onbar
onbar -b -L 0
ontape -r
# 或
onbar -r
# 主服务器配置
DRAUTO 0
DRINTERVAL 30
DRTIMEOUT 30
DRLOSTFOUND $INFORMIXDIR/etc/dr.lostfound
# 在次级服务器上执行
onmode -d primary HDR secondary_server_name
# 在次级服务器上执行
onmode -d standard
# 然后重新配置HDR反向同步
# 检查表数量
dbaccess database_name - <<EOF
SELECT COUNT(*) FROM systables WHERE tabtype = 'T';
EOF
# 检查数据量
dbaccess database_name - <<EOF
SELECT COUNT(*) FROM major_table;
EOF
# 检查约束和索引
dbaccess database_name - <<EOF
SELECT * FROM sysconstraints;
SELECT * FROM sysindices;
EOF
选择哪种方法取决于您的具体需求、数据量大小和可用停机时间。对于大型数据库,HDR或ontape/onbar可能是更好的选择,而对于小型数据库或特定表迁移,onunload/onload或dbexport/dbimport可能更简单高效。