您好,登錄后才能下訂單哦!
一、目錄準備
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 update db cfg for sample using logarchmeth2 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 logarchmeth2 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/db2inst1/db2_backup
3.scp /home/db2inst1/db2_backup/SAMPLE.0.db2inst1.DBPART000.20171220165404.001?? db2inst1@192.168.12.108:/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"
從庫連接報錯
SQL1776N? The command cannot be issued on an HADR database. Reason code = "1".
db2set DB2_HADR_ROS=ON
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。