學了好長時間DB2了,寫一些關於db2這個HADR組件的功能吧。HADR是high availability disaster recovery的簡寫。組成HADR,需要一對機器(DB2並沒有支持多個從機,是因為這樣會給系統的管理帶來很大麻煩),一個主機(primary),一個從機(secondary)。從高可用性上來講,當主機發生故障時,從機可以很快的接替主機工作,可以減少數據庫的故障時間;從災難恢復上來講,如果主機由於不可預測的災難發生了故障,遠程的從機數據不受任何影響,可以保證數據不會丟失。
這樣做,缺點也是很明顯的,就是客戶需要承擔一個額外的數據庫服務器的費用。從v97fp1開始,DB2 HADR開始支持ROS(read on standby)。從這個版本開始,從機開始支持讀操作,客戶的讀操作可以使用從機完成,減少主機的負載,提高系統的系能。這樣,客戶就不必擔心額外的費用了。
現在,寫一下HADR配置的過程吧,前提是大家已經安裝了db2。大家其實可以從google上搜索到很多關於這個話題的文章,但是我還是決定寫一下,希望給大家多一個參考。
首先,說明幾個需要註意的問題:
(1). HADR pair不可以使用circular logging。大家可以參照db2 infocenter,閱讀以下DB2的log方式
(2). HADR的從機是由主機的備份鏡像恢復而成的
(3). 啟動HADR的時候應該首先啟動standby,然後在啟動primary
(4). Standby和Primary上和HADR相關的參數一定要一致,否則會在系統握手校驗的時候失敗
現在我們假設HADR Pair部署在主機hostp和從機hosts上
第一步,分別在主機和從機上創建數據庫:
db2 create db hadrdb
第二步,設置主數據庫配置參數:
db2 update db cfg for hadrdb using logretain on
db2 update db cfg for hadrdb using trackmod on
db2 update db cfg for hadrdb using logindexbuild on
db2 update db cfg for hadrdb using indexrec restart
db2 update db cfg for hadrdb using HADR_LOCAL_HOST hostp
db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_HOST hosts
db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_INST db2inst1
db2 update db cfg for hadrdb using HADR_TIMEOUT 120
db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10
db2 update db cfg for hadrdb using HADR_SYNCMODE sync
第三步,備份主數據庫,生成一個備份文件
db2 backup db hadrdb
這裏需要註意一下,如果你是第一次將日誌的方式設置為retain方式,這次備份會使數據庫跳出backup pending方式。當從數據庫恢復時,不要使用這個備份文件,而是需要重新備份一次,使用第二次備份的文件。假設文件名是:HADRDB.0.sfbao.NODE0000.CATN0000.20091116071458.001
第四步,將剛才備份的數據庫日誌文件拷貝到一個從機可以使用的文件系統裏面
第五步,在從數據庫上恢復數據庫:
db2 restore db hadrdb from HADRDB.0.sfbao.NODE0000.CATN0000.20091116071458.001
第六步,配置從數據庫的參數:
db2 update db cfg for hadrdb using logretain on
db2 update db cfg for hadrdb using trackmod on
db2 update db cfg for hadrdb using logindexbuild on
db2 update db cfg for hadrdb using indexrec restart
db2 update db cfg for hadrdb using HADR_LOCAL_HOST hosts
db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_HOST hostp
db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_INST db2isnt1
db2 update db cfg for hadrdb using HADR_TIMEOUT 120
db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10
db2 update db cfg for hadrdb using HADR_SYNCMODE sync
其實,對於這一步,你只要更新HADR_LOCAL_HOST和HADR_REMOTE_HOST就可以了,因為其他的參數在restore db的時候都會恢復出來。
第七步,啟動從數據庫:
db2 start hadr on db hadrdb as standby
第八步,啟動主數據庫:
db2 start hadr on db hadrdb as primary
到這裏,一個HADR Pair就配置好了。筆記本快沒電了,以後在寫其它的。
計劃下一次寫一下和HADR和DB2 HA結合使用。
這樣做,缺點也是很明顯的,就是客戶需要承擔一個額外的數據庫服務器的費用。從v97fp1開始,DB2 HADR開始支持ROS(read on standby)。從這個版本開始,從機開始支持讀操作,客戶的讀操作可以使用從機完成,減少主機的負載,提高系統的系能。這樣,客戶就不必擔心額外的費用了。
現在,寫一下HADR配置的過程吧,前提是大家已經安裝了db2。大家其實可以從google上搜索到很多關於這個話題的文章,但是我還是決定寫一下,希望給大家多一個參考。
首先,說明幾個需要註意的問題:
(1). HADR pair不可以使用circular logging。大家可以參照db2 infocenter,閱讀以下DB2的log方式
(2). HADR的從機是由主機的備份鏡像恢復而成的
(3). 啟動HADR的時候應該首先啟動standby,然後在啟動primary
(4). Standby和Primary上和HADR相關的參數一定要一致,否則會在系統握手校驗的時候失敗
現在我們假設HADR Pair部署在主機hostp和從機hosts上
第一步,分別在主機和從機上創建數據庫:
db2 create db hadrdb
第二步,設置主數據庫配置參數:
db2 update db cfg for hadrdb using logretain on
db2 update db cfg for hadrdb using trackmod on
db2 update db cfg for hadrdb using logindexbuild on
db2 update db cfg for hadrdb using indexrec restart
db2 update db cfg for hadrdb using HADR_LOCAL_HOST hostp
db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_HOST hosts
db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_INST db2inst1
db2 update db cfg for hadrdb using HADR_TIMEOUT 120
db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10
db2 update db cfg for hadrdb using HADR_SYNCMODE sync
第三步,備份主數據庫,生成一個備份文件
db2 backup db hadrdb
這裏需要註意一下,如果你是第一次將日誌的方式設置為retain方式,這次備份會使數據庫跳出backup pending方式。當從數據庫恢復時,不要使用這個備份文件,而是需要重新備份一次,使用第二次備份的文件。假設文件名是:HADRDB.0.sfbao.NODE0000.CATN0000.20091116071458.001
第四步,將剛才備份的數據庫日誌文件拷貝到一個從機可以使用的文件系統裏面
第五步,在從數據庫上恢復數據庫:
db2 restore db hadrdb from HADRDB.0.sfbao.NODE0000.CATN0000.20091116071458.001
第六步,配置從數據庫的參數:
db2 update db cfg for hadrdb using logretain on
db2 update db cfg for hadrdb using trackmod on
db2 update db cfg for hadrdb using logindexbuild on
db2 update db cfg for hadrdb using indexrec restart
db2 update db cfg for hadrdb using HADR_LOCAL_HOST hosts
db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_HOST hostp
db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_INST db2isnt1
db2 update db cfg for hadrdb using HADR_TIMEOUT 120
db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10
db2 update db cfg for hadrdb using HADR_SYNCMODE sync
其實,對於這一步,你只要更新HADR_LOCAL_HOST和HADR_REMOTE_HOST就可以了,因為其他的參數在restore db的時候都會恢復出來。
第七步,啟動從數據庫:
db2 start hadr on db hadrdb as standby
第八步,啟動主數據庫:
db2 start hadr on db hadrdb as primary
到這裏,一個HADR Pair就配置好了。筆記本快沒電了,以後在寫其它的。
計劃下一次寫一下和HADR和DB2 HA結合使用。
文章標籤
全站熱搜
