一、迁移前准备
informix),并授予DBA、RESOURCE、CONNECT权限;使用dbexport(逻辑备份,生成文本文件)或ontape(物理备份,备份数据文件)工具备份源数据库。例如:dbexport -o /informix/backup/stores7 stores7 # 逻辑备份
ontape -s -L 0 # 物理0级备份(全量)
二、数据库结构迁移
createdb命令创建同名数据库,并关联预先创建的表空间(数据表空间、索引表空间)。例如:onspaces -c -d stores7_data -p /informix/data/stores7_data -o 0 -s 1000000 # 创建数据表空间(1TB)
onspaces -c -d stores7_idx -p /informix/data/stores7_idx -o 0 -s 2000000 # 创建索引表空间(2TB)
createdb -d stores7 -t stores7_data -i stores7_idx # 关联表空间
dbimport导入dbexport生成的.exp目录中的结构文件(如stores7.sql):dbimport -i /informix/backup/stores7 stores7 -c -l buffered # -c创建数据库,-l buffered缓冲写入
ontape备份,将源服务器的rootdbs、chunk文件复制到目标对应路径,修改onconfig中的路径参数(如ROOTPATH、DBSPACEPATH)。NUMBER转Informix的DECIMAL)、约束条件(如外键、唯一索引)、触发器语法(如AFTER INSERT改为AFTER INSERT ON),确保与Informix语法兼容。三、数据迁移实施
dbexport生成.unl数据文件和.exp控制文件;scp/rsync将导出目录复制到目标服务器;dbimport导入并更新统计信息(优化查询性能):cd /home/informix/db_export
dbimport -i . stores7 -c -l buffered update statistics
onconfig中的TAPEDEV(备份路径),执行ontape -s -L 0;onconfig、sqlhosts复制到目标服务器;onconfig路径正确,创建chunk文件(权限660),执行ontape -r -L 0恢复。四、应用程序适配调整
# 原连接字符串(源服务器)
jdbc:informix-sqli://源IP:1533/源数据库:INFORMIXSERVER=源服务器名;user=informix;password=xxx
# 新连接字符串(目标服务器)
jdbc:informix-sqli://目标IP:1533/目标数据库:INFORMIXSERVER=目标服务器名;user=informix;password=xxx
TODAY→CURRENT DATE,VARCHAR→CHAR);修改事务隔离级别(如COMMITTED READ→REPEATABLE READ);处理字符集差异(如en_US.819→zh_CN.gb18030)。五、测试与验证
SELECT COUNT(*) FROM 表名)、关键字段值(如订单金额、客户ID);用dbvalid工具验证物理一致性:dbvalid -d stores7 # 检查表空间、索引是否损坏
SELECT * FROM 大表 WHERE 条件),对比源与目标的执行时间;用onstat -g ses监控会话性能,检查锁等待或资源瓶颈。EXECUTE PROCEDURE 存储过程名)。六、迁移后运维
online.log、alert.log日志文件,使用onstat -g ses(会话状态)、onstat -g sql(慢查询)监控性能;优化表空间碎片(oncheck -pt)、索引(rebuild index)。ontape或onbar工具执行备份,确保数据安全。