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

DB2 rollforward 命令詳解:從原理到實戰的完整恢復指南

     編輯:DB2 教學

引言:數據恢復的關鍵環節

數據庫作為企業核心數據載體,恢復能力至關重要。DB2 提供四種恢復方式:崩潰恢復(保護數據一致性)、高可用災難恢復 HADR(數據複製防災難丟失)、版本恢復(恢復備份介質,restore 命令)、前滾恢復(備份後發生新事務時,restore 後用 rollforward 修復)。本文聚焦 rollforward 實戰應用,基於 DB2 V9.7 實例演示。

rollforward 前置條件

僅支持 recoverable 狀態數據庫(歸檔日誌模式,logarchmeth1/2 非 OFF)。設置參數並離線備份使數據庫可用:

db2 "update db cfg for $db using logfilsiz 4 LOGARCHMETH1 disk:$archivePath"
db2 "backup db $db to $backupPath"

執行事務操作後,恢復數據庫(不指定 WITHOUT ROLLING FORWARD 參數),使數據庫進入 rollforward-pending 狀態:

db2 "restore db $db from $backdir without prompting"

核心參數與操作類型

常用參數

  • QUERY STATUS:查詢數據庫當前狀態
  • STOP:完成前滾,不可再執行 rollforward,除非重新 restore
  • CANCEL:取消操作,退出 rollforward-pending 狀態
  • POINT IN TIME:恢復到特定時間點
  • END OF LOGS:前滾到活動日誌末尾
  • ONLINE:表空間級前滾允許其他連接

分區環境差異

Point-in-time 前滾在所有分區執行;END OF LOGS 指定 ON DATABASE PARTITION 參數時僅在指定分區運行,否則全部分區生效;end of backup 影響所有分區。

兩類前滾模式

數據庫級:需 restore 進入 rollforward-pending,執行期間禁止其他連接。
表空間級:不只 restore 導致該狀態,斷電等也可觸發。可指定表空間,未指定則處理所有該狀態表空間。備份後重命名表空間需用新名稱。執行期間可選擇允許其他操作(ONLINE)。

注意:進行中的 rollforward 不可取消,僅可在完成後用 cancel 取消未 stop 的操作;已 stop 則不可 cancel。

實戰案例演示

案例 1:表空間級前滾與分步恢復

大數據量場景下,表空間備份恢復更高效。備份三個表空間 tbs1/tbs2/tbs3,創建表插入數據後恢復三表空間,分別前滾 tbs1 到日誌末尾(ONLINE),tbs2/tbs3 到日誌末尾並 STOP(ONLINE),驗證查詢成功。

db2 "rollforward db test to end of logs tablespace(tbs1) online"
db2 "rollforward db test to end of logs and stop tablespace(tbs2, tbs3) online"

案例 2:QUERY STATUS 監控恢復進度

查詢已前滾日誌文件、下一所需歸檔日誌、最近提交事務時間戳:

db2 "rollforward db test query status"

案例 3:CANCEL 取消前滾並重新恢復

執行 END OF LOGS 後 CANCEL,所有前滾回滾,數據庫進入 restore-pending,連接被拒。重新 restore 後進入 rollforward-pending,再次前滾恢復。

案例 4:END OF LOGS AND COMPLETE 完整前滾

前滾到日誌最後(遍歷所有歸檔與活動日誌),完成恢復:

db2 "rollforward db test to end of logs and complete"

案例 5:INTERRUPTED 中斷後續續

前滾過程中 Ctrl+C 中斷,再次執行 END OF LOGS AND STOP 會接著上次中斷點繼續至完成,數據庫連接恢復正常。

案例 6:NORETRIEVE 跳過歸檔日誌獲取

noretrieve 參數指示不取回歸檔日誌,若前滾需要歸檔日誌則因缺失而失敗:

db2 "rollforward db test to end of logs and stop noretrieve"

案例 7:OVERFLOW LOG PATH 覆蓋日誌溢出路徑

參數覆蓋先前設置的 overflowlogpath,執行過程可見新目錄下日誌文件生成:

db2 "rollforward db test to end of logs and complete overflow log path ($overflowPath2)"
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved