1. 程式人生 > >db2 v10.5 HADR快速部署手冊

db2 v10.5 HADR快速部署手冊

db2 hadr

一、目錄準備
mkdir -p /home/db2inst1/db2_backup
mkdir -p /home/db2inst1/db2_archive
mkdir -p /home/db2inst1/db2_log
chmod -R 775 /home/db2inst1/db2_backup
chmod -R 775 /home/db2inst1/db2_archive
chmod -R 775 /home/db2inst1/db2_log
chown -R db2inst1:db2inst1 /home/db2inst1/db2_backup
chown -R db2inst1:db2inst1/home/db2inst1/db2_archive
chown -R db2inst1:db2inst1 /home/db2inst1/db2_log

二、服務和端口配置(註意HADR服務端口和實例端口要區分開)
DB2_HADR_1 55110/tcp
DB2_HADR_2 55111/tcp

db2 get dbm cfg | grep -i SVCENAME
db2 update dbm cfg using SVCENAME DB2_db2inst1
db2 update database manager configuration using svcename DB2_HADR_1(自定義名稱)

主庫
db2 update dbm cfg using SVCENAME 55110
備庫
db2 update dbm cfg using SVCENAME 55111

UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USING HOSTNAME 192.168.12.107 PORT 50000

UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USING HOSTNAME 192.168.12.108 PORT 50000


三、開啟歸檔模式 (主庫和備庫都操作)
先修改歸檔參數,做離線備份,重啟數據庫後,手工測試歸檔

主庫
db2 update db cfg for sample using logarchmeth1 disk:/home/db2inst1/db2_archive/

db2 update db cfg for sample using NEWLOGPATH /home/db2inst1/db2_log

db2 force applications all

db2 backup db sample to /home/db2inst1/db2_backup/

db2stop force;db2start

db2 archive log for db sample

SQL1116N A connection to or activation of database "SAMPLE" failed because
the database is in BACKUP PENDING state. SQLSTATE=57019

備庫:

db2 update db cfg for sample using logarchmeth1 disk:/home/db2inst1/db2_archive/

db2 update db cfg for sample using NEWLOGPATH /home/db2inst1/db2_log

db2 force applications all

db2 backup db sample to /home/db2inst1/db2_backup/

db2stop force;db2start

db2 archive log for db sample


四、備份和還原從庫
主庫離線全備份
1.db2 backup database sample to /home/db1inst1/db2_backup
3.scp /home/db2inst1/db2_backup/SAMPLE.0.db2inst1.DBPART000.20171220165404.001 [email protected]:/home/db2inst1/db2_backup/


備庫還原數據
db2 restore database sample from "/home/db2inst1/db2_backup/" taken at 20171220165404 replace history file

2.SQL2523W Warning! Restoring to an existing database that is different from

3.the database on the backup image, but have matching names. The target database

4.will be overwritten by the backup version. The Roll-forward recovery logs

5.associated with the target database will be deleted.

6.Do you want to continue ? (y/n) y

7.DB20000I The RESTORE DATABASE command completed successfully.


五、主庫參數配置

db2 get db cfg for sample | grep -i HADR
[db2inst1@107-sqlcheck db2_backup]$ db2 get db cfg for sample | grep -i HADR
HADR database role = STANDARD
HADR local host name (HADR_LOCAL_HOST) =
HADR local service name (HADR_LOCAL_SVC) =
HADR remote host name (HADR_REMOTE_HOST) =
HADR remote service name (HADR_REMOTE_SVC) =
HADR instance name of remote server (HADR_REMOTE_INST) =
HADR timeout value (HADR_TIMEOUT) = 120
HADR target list (HADR_TARGET_LIST) =
HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC
HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(0)
HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0
HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0


db2 update db cfg for sample using HADR_LOCAL_HOST 192.168.12.108

db2 update db cfg for sample using HADR_LOCAL_SVC DB2_HADR_2

db2 update db cfg for sample using HADR_REMOTE_HOST 192.168.12.107

db2 update db cfg for sample using HADR_REMOTE_SVC DB2_HADR_1

db2 update db cfg for sample using HADR_REMOTE_INST db2inst1

db2 update db cfg for sample using HADR_SYNCMODE NEARSYNC

db2 update db cfg for sample using HADR_TIMEOUT 120


備庫參數配置

db2 get db cfg for sample | grep -i HADR

db2 update db cfg for sample using HADR_LOCAL_HOST 192.168.12.108

db2 update db cfg for sample using HADR_LOCAL_SVC DB2_HADR_2

db2 update db cfg for sample using HADR_REMOTE_HOST 192.168.12.107

db2 update db cfg for sample using HADR_REMOTE_SVC DB2_HADR_1

db2 update db cfg for sample using HADR_REMOTE_INST db2inst1

db2 update db cfg for sample using HADR_SYNCMODE NEARSYNC

db2 update db cfg for sample using HADR_TIMEOUT 120

db2 get db cfg for sample | grep -i HADR

啟動HADR


先啟動備庫
standby端的數據庫通過primary端的數據庫恢復來,恢復後必須是roll forward-pending狀態,
restore中不能使用without rolling forward,啟動備庫之前先確定這個狀態
備庫狀態確認
db2 get db cfg for sample | grep Rollforward
Rollforward pending = DATABASE

相比於主庫:
db2 get db cfg for sample | grep Rollforward
Rollforward pending = NO


啟動備庫
db2 start hadr on database sample as standby
[db2inst2@kvm111 ~]$ db2 start hadr on database sample as standby
SQL1766W The command completed successfully. However, LOGINDEXBUILD was not
enabled before HADR was started.
查看HADR狀態-目前只有備庫,狀態是disconnected


啟動主庫
db2 deactivate database sample
db2 start hadr on database sample as primary

現在主庫和備庫已經建立連接,HADR實驗環境部署完成

db2 get snapshot for db on sample | grep -A 15 "HADR Status"

db2 get snapshot for db on hadb01 | grep -A 15 "HADR Status"


SQL1768N
未能啟動 HADR。原因碼 = reason-code。
說明:
與原因碼對應的解釋是:

1 不可恢復數據庫,這是因為正在使用循環日誌記錄。
2 數據庫啟用了無限活動日誌記錄。
3 數據庫啟用了 DATALINKS。
4 HADR_LOCAL_HOST 配置參數與本地主機名不匹配。
5 HADR_LOCAL_SVC 配置參數是無效服務名稱。
6 HADR_REMOTE_SVC 配置參數是無效服務名稱。
7 在 HADR 超時時間間隔內,主數據庫未能與它的備用數據庫建立連接。
8 一個或多個 HADR 數據庫配置參數沒有任何值。
9 數據庫配置為使用原始日誌。但是,HADR 不支持對數據庫日誌文件使用原始 I/O(直接磁盤存取)。
10 命令由於 STOP HADR 命令、取消激活數據庫或內部錯誤而被 HADR 關閉所中斷。
98 未安裝有效的 HADR 許可證。命令未成功完成。
99 在 HADR 啟動期間發生了內部錯誤。


用戶響應:
與原因碼對應的用戶響應是:

1 數據庫必須是可恢復的數據庫。激活日誌歸檔或者打開 LOGRETAIN,然後重新發出該命令。
2 禁用無限活動日誌記錄並重新發出該命令。
3 將數據庫管理器配置參數 DATALINKS 設置為 NO 並重新發出該命令。
4 將 HADR_LOCAL_HOST 設置更正為與本地主機名相匹配。
5 確保 HADR_LOCAL_SVC 配置參數是有效的服務名稱。對於 Unix 平臺,編輯 /etc/services 文件。對於 Windows,編輯 %SystemRoot%\system32\drivers\etc\services。另外,可以為此參數指定文字端口號。
6 確保 HADR_REMOTE_SVC 配置參數是有效服務名稱。對於 Unix 平臺,編輯 /etc/services 文件。對於 Windows,編輯 %SystemRoot%\system32\drivers\etc\services。另外,可以為此參數指定文字端口號。
7 檢查備用數據庫上的遠程主機和遠程服務參數。確保備用數據庫是聯機的,並且網絡在起作用。如果網絡速度太慢,則還要考慮增大 HADR_TIMEOUT 配置參數,或者使用 BY FORCE 選項來啟動主數據庫。
8 確保一個或多個 HADR 數據庫配置參數具有值。
9 將數據庫重新配置為對日誌文件只使用文件系統存儲器,而不是使用原始 I/O(直接磁盤存取)設備。參閱 DB2 信息中心中有關 logpath 和 newlogpath 數據庫配置參數的討論。
10找出 HADR 關閉的原因,如有必要,重新發出 START HADR 命令。
98 獲取並安裝有效的 HADR 許可證,然後重新提交該命令。
99 如果問題仍然存在,請與“IBM 支持機構”聯系。


有時候我們會希望讓一個實例下的某個數據庫停止對外提供服務,而不影響其它的數據庫,
這時就需要停止單個數據庫。
方法總結如下:

一種方法是:
使用 quiense database停止單個數據庫:
如果連上來的用戶不是sysadm中的一員,你可用instance用戶連接上數據庫,然後用
db2 quiesce db IMMEDIATE FORCE CONNECTIONS
然後
db2 reset 或者db2 terminate
然後
deactivate db
辦完事後,記得用db2 unquiesce db來恢復其對外連接。

具體流程如下:
db2 connect to sample
db2 quiesce db immediate force connections
db2 terminate

db2 deactivate db sample

db2 connect to sample
db2 unquiesce db

註意:
QUIESCE DATABASE 後,僅有 sysadm, sysmaint, dbadm, 或 sysctrl 用戶可以訪問數據庫。
另一種方法:
停止訪問:
db2 uncatalog database sample
db2 terminate

啟動訪問:
db2 catalog database sample
db2 terminate
db2 connect to sample

db2 v10.5 HADR快速部署手冊