首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 HADR 啟動、停止與故障切換操作指南

     編輯:DB2 教學

DB2 HADR 高可用性災難恢復:啟動、停止與故障切換操作指南

HADR (High Availability Disaster Recovery) 透過持續資料複寫從主資料庫傳送至備援資料庫,避免資料遺失。本文說明 HADR 啟動/停止命令、狀態監控與接管/故障轉移操作。

一、 HADR 架構簡述

  • 主資料庫:接受讀寫,將日誌記錄透過 TCP/IP 傳送至備援。
  • 備援資料庫:接收日誌並重做,依同步狀態分為:本地同步 → 遠端同步暫掛 → 遠端同步 → 對等狀態 (Peer State)。
  • HADR_TIMEOUT:主庫啟動 HADR 時等待備援連線的秒數,逾時則啟動失敗。

二、 啟動 HADR

1. 啟動備援資料庫 (Standby)

DEACTIVATE DATABASE SAMPLE
START HADR ON DATABASE SAMPLE [USER db2admin USING db2admin] AS STANDBY

2. 啟動主資料庫 (Primary)

DEACTIVATE DATABASE SAMPLE
START HADR ON DATABASE SAMPLE [USER db2admin USING db2admin] AS PRIMARY [BY FORCE]
  • BY FORCE:強制啟動主庫,不等待備援連線 (適用備援暫時離線場景)。
  • 若未加 BY FORCE,主庫會在 HADR_TIMEOUT 內等待備援連線,逾時失敗。

三、 停止 HADR

1. 停止備援資料庫

DEACTIVATE DATABASE SAMPLE
STOP HADR ON DATABASE SAMPLE [USER db2admin USING db2admin]

注意:若在作用中備援上直接下 STOP HADR 會失敗,必須先 DEACTIVATE。

2. 停止主資料庫

STOP HADR ON DATABASE SAMPLE [USER db2admin USING db2admin]

作用中主庫執行此命令會斷開所有連線,資料庫轉為標準模式並保持聯機。

四、 監控 HADR 狀態

db2pd -d SAMPLE -hadr

輸出關鍵欄位:

  • HADR_STATE:PEER / REMOTE_CATCHUP / LOCAL_CATCHUP / DISCONNECTED
  • PRIMARY_LOG_FILE, STANDBY_LOG_FILE:日誌檔同步進度
  • HADR_CONNECT_STATUS:CONNECTED / DISCONNECTED

五、 接管 / 故障轉移

只能在備援資料庫執行 TAKEOVER。

1. 一般接管 (Graceful Takeover)

TAKEOVER HADR ON DATABASE SAMPLE

前提:備援處於 PEER 或 REMOTE_CATCHUP 狀態,資料零遺失。

2. 強制接管 (Forced Takeover / Failover)

TAKEOVER HADR ON DATABASE SAMPLE BY FORCE

適用主庫故障、備援非 PEER 狀態。可能遺失未同步日誌,謹慎使用。

六、 角色切換後續處理

  1. 原主庫修復後,可作為新備援加入 HADR 對:
    START HADR ON DATABASE SAMPLE AS STANDBY
  2. 確認新主庫應用程式連線字串已更新 (或使用虛擬 IP/自動客戶端重導向)。
  3. 監控 db2pd -hadr 確認雙方進入 PEER 狀態。

七、 常見問題排查

現象可能原因對策
主庫啟動 HADR 逾時備援未啟動、網路不通、防火牆阻擋先啟動備援,檢查 TCP/IP 連通性與 HADR_PORT
備援長期處於 REMOTE_CATCHUP網路頻寬不足、主庫寫入量大、備援 CPU/IO 瓶頸調整 HADR_SYNCMODE、增加網路頻寬、優化備援硬體
強制接管後資料不一致未同步日誌遺失若可能,從主庫備份重建備援;否則接受資料遺失
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved