需在 Windows Server 上構建 DB2 故障轉移集群。最初沿用 Oracle RAC on Windows 的思路:兩節點均啟動實例,資料檔置於共享存儲,通過 MSCS「通用服務」資源類型掛載 DB2 服務實現故障轉移。
現象:有用戶連接時,執行 db2stop 或 MSCS 離線資源,第一次必失敗,第二次才能停下來。導致手動切換極其不可靠,自動故障轉移更無從談起。
根因:DB2 服務停止前需斷開所有應用連接,但 MSCS 預設超時較短,且無預停止腳本機制強制斷連。
曲折嘗試:曾嘗試編寫預停止腳本調用 db2 force application all,但時序控制極其麻煩,易產生競態條件。
查閱 IBM DeveloperWorks 文檔發現:DB2 早已內建集群化方案——db2mscs 工具,只需一份配置文件即可自動完成:
# 實例名稱(必填)
DB2_INSTANCE=DB2
# 實例服務登錄賬號(域用戶,需具備「作為服務登錄」權限)
DB2_LOGON_USERNAME=dbdomain/db2admin
DB2_LOGON_PASSWORD=0000
# 集群資源組命名
CLUSTER_NAME=MYCLUSTER
GROUP_NAME=DB2 Group A
# 分區號(單分區固定 0)
DB2NODE=0
# 浮動 IP 資源(客戶端連接入口)
IP_NAME=MscsA
IP_ADDRESS=192.168.10.1
IP_SUBNET=255.255.255.0
IP_NETWORK=Public Network # 對應集群網絡連接名稱
# 網絡名稱資源(可選,僅用 Kerberos/SPN 時必填)
NETNAME_NAME=MscsAName
NETNAME_VALUE=DataCenter
NETNAME_DEPENDENCY=MscsA
# 共享磁碟資源(含實例目錄、資料庫容器)
DISK_NAME=DISK E:
INSTPROF_DISK=E:
| 參數 | 填寫要點 |
|---|---|
IP_ADDRESS | 浮動 VIP,規劃在業務網段,勿與節點固定 IP 衝突 |
IP_NETWORK | 必須填 MSCS 集群管理器中「網絡連接」的顯示名稱(如「Public Network」) |
NETNAME_* | 純 IP 連接場景可留空,不影響功能 |
DISK_NAME | 格式 DISK <盤符>:,需先在 MSCS 加入共享磁碟資源 |
INSTPROF_DISK | 實例配置文件目錄所在共享盤符(通常與 DISK_NAME 同盤) |