DB2 遠程 SQL 複製 (原名 DataPropagator Relational, 後整合入 InfoSphere Replication Server / Q Replication) 允許在兩個 DB2 實例 (源/目標) 之間以表為粒度、基於 SQL 日誌採集 (Log-based CDC) 實現近實時數據同步。支持單向、雙向、多主、廣播、聚合等拓撲,廣泛用於報表卸載、異地備份、數據分發、雲遷移同步。
db2 create database REPCTL automatic storage yes db2 connect to REPCTL ASNCLP SESSION SET TO REPCTL SERVER; ASNCLP CREATE CONTROL TABLES FOR CAPTURE SERVER SOURCE_DB; ASNCLP CREATE CONTROL TABLES FOR APPLY SERVER TARGET_DB;
ASNCLP CREATE REGISTRATION FOR SOURCE TABLES (SCHEMA1.TABLE1, SCHEMA1.TABLE2) IN SOURCE_DB OPTIONS (CONFLICT_LEVEL 0, CHANGED_COLS_ONLY N);
ASNCLP CREATE SUBSCRIPTION SET SUB_SET_1
FOR APPLY SERVER TARGET_DB
OPTIONS (TIMING INTERVAL 60, -- 每 60 秒應用一次
COMMIT_INTERVAL 1000); -- 每 1000 行提交
ASNCLP CREATE SUBSCRIPTION MEMBER FOR SUB_SET_1
SOURCE TABLE SCHEMA1.TABLE1
TARGET TABLE SCHEMA1.TABLE1
OPTIONS (TARGET_KEY_CHANGE N, -- 目標鍵不變
CONFLICT_ACTION I); -- 衝突忽略 (單向典型)
-- 捕獲啟動 (源端實例) asncap capture_server=SOURCE_DB capture_schema=ASN -- 應用啟動 (目標端實例) asnapply apply_server=TARGET_DB apply_schema=ASN
| 參數 | 組件 | 建議值/策略 | 影響 |
|---|---|---|---|
| COMMIT_INTERVAL | Apply | 1000-10000 | 目標端提交頻率,影響延遲與事務日誌量 |
| TIMING_INTERVAL | Apply | 30-300 秒 | 應用輪詢間隔,實時性與 CPU 平衡 |
| LAG_LIMIT | Capture | 10000 (日誌序列號差) | 捕獲落後閾值,超限告警 |
| MEMORY_LIMIT | Capture/Apply | 256MB-1GB | 進程內存上限,防 OOM |
| MQ_QUEUE_DEPTH / STAGING_TABLE_SPACE | Queue | 預留 10-50GB | 緩衝高峰變更,防溢出 |
| 現象 | 可能原因 | 排查 |
|---|---|---|
| 捕獲停滯、日誌積壓 | 源端長事務未提交、日誌讀取慢、MQ 傳輸阻塞 | db2pd -logs 檢查最老活動事務、網絡/磁盤 I/O、MQ 隊列深度 |
| 應用端大量衝突/錯誤 | 目標端約束不一致、雙向無衝突列、手工修改目標表 | 對比源目標 Schema、啟用衝突檢測列、禁止目標端直寫 |
| 延遲突增 | 批量操作 (LOAD/大量 DELETE) 產生海量日誌、目標端索引維護慢 | 批量操作前暫停捕獲/應用、批量後 REORG 索引、調大 COMMIT_INTERVAL |
| 控制表膨脹 | 歷史記錄未清理、信號表堆積 | 定期 `DELETE FROM ASN.IBMSNAP_* WHERE TIME < CURRENT DATE - 30 DAYS` |
DB2 遠程 SQL 複製提供成熟、靈活的異構/同構數據同步能力。關鍵在於:合理設計訂閱集粒度、調優捕獲/應用參數、建立全鏈路監控告警、制定故障演練預案。配合 Q Replication 可滿足金融級雙活 RPO=0、RTO<分鐘要求。