HADR (High Availability Disaster Recovery) 屬非同步 HA 叢集,採「主庫+備庫」雙副本架構,透過交易日誌傳送與重放 (Replay) 維持資料一致:



useradd -u 505 -g db2iadm1 -m -d /home/db2hadr db2hadr
db2icrt -u db2fenc1 db2hadr
su - db2hadr
db2start
db2 create database HADB
db2 update db cfg for HADB using logretain on
db2 backup database HADB to /mnt/hgfs/share
# 記錄時間戳 20090201125734
scp /mnt/hgfs/share/HADB.0.db2hadr.NODE0000.20090201125734.001 Standby:/mnt/hgfs/share/
su - db2hadr
db2start
db2 restore database HADB from "/mnt/hgfs/share" taken at 20090201125734 replace history file
# Primary 上
db2 update alternate server for database HADB using hostname 192.168.189.129 port 50000
# Standby 上
db2 update alternate server for database HADB using hostname 192.168.189.128 port 50000
DB2_HADR_1 55001/tcp
DB2_HADR_2 55002/tcp
db2 update db cfg for HADB using HADR_LOCAL_HOST 192.168.189.128
db2 update db cfg for HADB using HADR_LOCAL_SVC DB2_HADR_1
db2 update db cfg for HADB using HADR_REMOTE_HOST 192.168.189.129
db2 update db cfg for HADB using HADR_REMOTE_SVC DB2_HADR_2
db2 update db cfg for HADB using HADR_REMOTE_INST db2hadr
db2 update db cfg for HADB using HADR_SYNCMODE NEARSYNC
db2 update db cfg for HADB using HADR_TIMEOUT 120
db2 connect to HADB
db2 quiesce database immediate force connections
db2 unquiesce database
db2 connect reset
db2 update db cfg for HADB using HADR_LOCAL_HOST 192.168.189.129
db2 update db cfg for HADB using HADR_LOCAL_SVC DB2_HADR_2
db2 update db cfg for HADB using HADR_REMOTE_HOST 192.168.189.128
db2 update db cfg for HADB using HADR_REMOTE_SVC DB2_HADR_1
db2 update db cfg for HADB using HADR_REMOTE_INST db2hadr
db2 update db cfg for HADB using HADR_SYNCMODE NEARSYNC
db2 update db cfg for HADB using HADR_TIMEOUT 120
# Standby
db2 deactivate database HADB
db2 start hadr on database HADB as standby
# Primary
db2 deactivate database HADB
db2 start hadr on database HADB as primary
| 模式 | Primary Commit 等待條件 | 資料損失風險 | 效能影響 |
|---|---|---|---|
| SYNC | 日誌寫入 Standby 本地並回報 | 零 | 最高延遲 |
| NEARSYNC | 日誌進入 Standby 作業系統緩衝區 | 極低 (Standby OS 崩潰才遺失) | 中等 |
| ASYNC | 日誌送出網路即返回 | 網路緩衝區內資料可能遺失 | 最低 |
| SUPERASYNC | 不等待,獨立發送 | 最高 | 無 |
本範例採 NEARSYNC 平衡可用性與效能。
db2 get snapshot for db on HADB 確認 Primary/Standby 角色與 Peer 狀態。db2 takeover hadr on database HADB 強制接管。

HADR_STATE、HADR_LOG_GAP (日誌差距)、PRIMARY_LOG_TIME vs STANDBY_LOG_TIME。TAKEOVER HADR ON DATABASE ... (不加 BY FORCE) 讓 Primary 正常關閉後再切換。START HADR AS STANDBY),再視需求切回。LOGRETAIN=ON 且檔案系統空間足夠,防止 Standby 追不上需重新初始化。HADR 以資料庫原生複寫取代共享存儲,消除單點故障,支援異地部署,並提供 Client 透明故障轉移。配合 NEARSYNC 模式與自動重導向,可在毫秒級 RTO 內實現近乎零 RPO 的高可用與災難恢復,是 DB2 企業級部署的核心能力之一。