一、遷移前準備
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工具執行備份,確保數據安全。