HADR( 高可用性災難恢復 ) 是 DB2 數據庫的一個組件,是 DB2 提供給用戶的一種高可用性和災難恢復的解決方案。組成 HADR 需要一對機器,一個主機和一個備機。它的基本原理是主機將數據庫產生的日誌通過網絡傳輸到備機,然後備機將這些日誌重新應用,整個過程類似於前滾恢復。從而保證主機和備機數據庫的一致。當主機發生意外停機以後,例如停電或者災難等,備機可以很快的接替主機繼續工作。從 DB2 V97FP1 開始,HADR 開始支持 ROS(Read On Standby),備機除了做備份數據庫以外,還可以接收連接,執行讀操作。

通過獲取數據庫配置信息,可以看到 HADR 的一些基本配置,如圖 1,可以看到 HADR 的角色、同步方式、超時時間等等。
如果需要修改這些參數,可是使用”db2 update db cfg for dbname using CONFIG_PARAM value”命令對相應的參數進行修改。修改以後,需要重新啟動數據庫新的配置才生效。
DB2 的快照信息顯示了某個時刻數據庫的運行狀況。從這些數據裏面,也可以觀察到 HADR 的運行情況。例如,從圖 2 中,可以看到 HADR 的角色、狀態、連接狀況、當前正在操作的日誌文件等等。
Db2pd 是一個很強大的工具。通過這個工具,可以看到 DB2 在運行時,內存裏面的一些狀況。所以通過 db2pd 看到的信息都是實時信息。
通過 db2pd – hadr 看到的信息是非常完整的,下面會對這些輸出項目進行詳細的解釋。
通過以上方式,可以看到如下監控項。
角色(Role):標誌數據庫是主數據庫還是從數據庫。
狀態(State):HADR 當前的狀態。包括 Local Catchup、Remote Catchup、Remote Catchup Pending、Peer、Disconnect Peer。
Local Catchup: 如果備機在這種狀態下,表明備機這在從本地的磁盤上讀取日誌文件,並且對日誌進行重新重做;如果主機在這種狀態下,表明它正在等待備機的連接。HADR 的主機並沒有從本地讀日誌並重做的過程,我們之所以讓主機顯示這個狀態,就是通過主機上的這個狀態告訴用戶,備機正在做本地日誌的重做。
Remote Catchup: 處於這個狀態的 HADR 的主機正在從本地讀日誌,並且將這些日誌發送給備機;而備機會從主機接受日誌,並且將這些日誌寫入它本地的磁盤,並且對這些日誌進行重做。
Remote Catchup Pending: 如果備機出於這種狀態,表明它正在嘗試連接主機。出現這種狀態,一般是因為主機不存在或者主機還沒有完全的啟動起來,導致連接沒有成功。
Peer: 如果 HADR 的主備機器處於這種狀態,表明主機和備機的網絡連接良好。日誌可以順利的從主機發送到備機。
Disconnect Peer: 如果 HADR 的主備機器處於這種狀態,表明主機和備機的網絡已經斷開,但是連接斷開的時間並沒有超過 PEER_WINDOW。這個狀態內,主機上的事務不可以提交。如果這個時候網絡恢復,主機和備機重新建立連接,主備機器會重新回到 PEER 狀態;如果雙方進入這個狀態的原因是主機出現了故障,當在備機上做接管(takeover)操作時,不會發生數據丟失。就是說不會出現主機提交了某個事務,但是備機沒有提交這個事務的情況。
Disconnected: 如果主機處於這種狀態,表明主機沒有收到來自備機的連接。如果備機處於這種狀態,表明備機不能連接到主機。
同步方式(SyncMode):HADR 傳輸日誌的三種方式,同步模式,近同步模式,異步模式。由於這三種方式對 HADR 來說特別重要,筆者在這裡將詳細介紹這三種方式。
1. 同步模式:這種模式下,主機首先將日誌寫入本地磁盤,然後發送給備機。備機收到這些日誌以後,首先將這些日誌寫入本地磁盤以後,然後向主機發送一個回應。當主機收到這個回應以後,事務才可以提交。
這種模式下,因為當事務提交時,相應的日誌已經保存在了備機的磁盤上。所以主機在任何時間下發生故障,備機切換以後可以保證不丟失數據。
2. 近同步模式:在這種模式下,主機在將日誌寫入磁盤的同時將日誌發送到備機。當備機收到日誌以後,就會向主機發送回應消息。主機收到這條回應消息以後,事務才可以提交。
也就是說,當主機收到回應消息時,剛才發送備機的日誌不一定寫到了備機的磁盤上,而有可能還在備機的內存里。如圖 5 所示:
這種模式下,因為主機發送的日誌已經保存在了備機的內存中。只有當主機和備機同時出現故障停機的時候,才會丟失數據。
3. 異步模式:與近同步模式類似,在這種模式下,主機也是寫日誌到磁盤的同時發送日誌到備機。與近同步模式不同的是,在異步模式下,主機並不會等備機的回應消息。而是日誌發送成功以後,事務就可以提交。在這裡,日誌發送成功並不代表主次一定收到了這條消息,這條消息也可能保存在了主機的 TCP 發送緩衝區裏面。
這種模式下,因為日誌有可能仍然在主機的 TCP 緩衝區裏面,如果這個時候主機出現故障停機,這些數據就會丟失。但是和另兩種模式相比,異步模式網絡上的開銷減小了,這種模式對數據庫性能影響是最小的。
以下文章點擊率最高
Loading…





