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

DB2 離線/線上全量、增量備份與還原完整操作手冊(含 TSM、db2ckrst、分節點恢復)

     編輯:DB2 教學

前言

本手冊涵蓋 DB2 資料庫在分區環境(DPF)下的離線全量、線上全量、線上增量/差異增量備份,以及災難恢復場景下的完整還原流程(歷史文件還原 → db2ckrst 輔助 → 分節點增量還原 → 前滾日誌),適用於 DB2 9.7+ 版本。

一、離線全量備份——最基礎、最可靠的基線

前置條件

  • 確認無應用連線:db2 list applications for db SAMPLE,若有連線需協調停止應用。
  • 強制斷開所有連線並重啟實例:
db2stop force
db2start

執行備份(以 TSM 為介質)

db2 backup db SAMPLE use tsm
  • 成功返回時間戳(如 20231201103045),記錄備份 ID。

驗證備份

db2 list history backup all for SAMPLE
db2adutl query db SAMPLE

兩者均應顯示最新備份記錄。

分區環境注意

先備份目錄節點,再備份其他數據節點。 目錄節點包含系統目錄表空間,必須優先保護。


二、線上全量備份——業務零中斷

1. 啟用歸檔模式(僅需一次)

db2 update db cfg for SAMPLE using userexit on
db2 update db cfg for SAMPLE using logretain on
db2 update db cfg for SAMPLE using trackmod on
# 各分區節點分別執行(或使用 db2_all)
db2stop force; db2start

啟用後資料庫進入 Backup Pending,必須先做一次離線全量備份(參考第一節)解除。

2. 線上全量備份命令

db2 backup db SAMPLE online use tsm

各分區節點並行執行(db2_all "||| backup db SAMPLE online use tsm"),記錄各節點返回的時間戳(通常一致)。

3. 驗證同離線備份


三、線上增量備份——縮減備份窗口

1. 累積增量

db2 backup db SAMPLE online incremental use tsm

備份自上次全量備份以來所有變更頁面。體積隨時間增大,但還原鏈短(僅需 全量 + 最新累積增量)。

2. 差異增量

db2 backup db SAMPLE online incremental delta use tsm

備份自上次任意備份(全量/累積/差異)以來變更頁面。體積最小,但還原鏈長(全量 + 多個連續差異增量)。

3. 類比 Oracle

  • DB2 incremental ≈ Oracle Cumulative Incremental(Level 1 Cumulative)。
  • DB2 incremental delta ≈ Oracle Differential Incremental(Level 1 Differential)。

4. 驗證與分區同全量備份


四、災難恢復演練:完整還原流程

場景:模擬資料庫損壞,需從 TSM 還原至最新一致狀態。

步驟 1:模擬災難(僅演練環境)

db2 drop db SAMPLE

步驟 2:還原備份歷史文件(關鍵)

每次備份均會包含歷史文件。使用最新備份的時間戳:

db2 restore db SAMPLE history file use tsm taken at 20231201103045 buffer 100
  • 各分區節點分別執行,目錄節點優先。
  • 完成後可用 db2 list history backup all for SAMPLE 查看備份鏈。

步驟 3:使用 db2ckrst 獲取建議還原序列

db2ckrst -d SAMPLE -t 20231201103045 -r database

輸出範例:

Suggested restore sequence:
1. RESTORE DB SAMPLE INCREMENTAL USE TSM TAKEN AT 20231125100000 (Full)
2. RESTORE DB SAMPLE INCREMENTAL USE TSM TAKEN AT 20231128100000 (Incremental)
3. RESTORE DB SAMPLE INCREMENTAL USE TSM TAKEN AT 20231201100000 (Incremental Delta)
4. ROLLFORWARD DB SAMPLE TO END OF LOGS AND STOP

務必嚴格遵循順序與時間戳。

步驟 4:分節點執行增量還原

對每個建議的備份映像檔,在對應分區節點執行:

# 目錄節點
db2 restore db SAMPLE incremental use tsm taken at 20231125100000 buffer 100
# 數據節點 1
db2_all "<<<0< db2 restore db SAMPLE incremental use tsm taken at 20231125100000 buffer 100"
# 依序執行後續增量映像檔...
  • buffer 100:指定 100 個 4KB 頁緩衝(400KB),視記憶體調整。
  • 還原完成後資料庫處於 ROLLFORWARD PENDING 狀態。

步驟 5:前滾日誌至一致點

在目錄節點執行(自動協調所有分區):

db2 rollforward db SAMPLE to 2023-12-01-13.27.25.000000 on all nodes and stop
  • to :指定恢復時間點(通常為災難發生前最後提交事務時間,或 end of logs 恢復至最新)。
  • on all nodes:分區環境必須指定,確保所有分區前滾至同一 LSN/時間點。
  • and stop:結束前滾,資料庫轉為正常狀態。若需繼續前滾用 and complete。

步驟 6:驗證業務可用性

db2 connect to SAMPLE
db2 "select count(*) from CORE_TABLE"
# 應用端冒煙測試

五、補充說明與最佳實踐

  1. 表空間級備份/還原: 在 BACKUP/RESTORE 命令後加 TABLESPACE (TBS_NAME) 子句。前提:資料庫處於歸檔模式且啟用 trackmod。
  2. 還原鏈完整性: 若存在更新的全量備份,db2ckrst 會建議從最近的全量開始,依序應用其後所有增量,最後前滾。切勿跳過任何環節。
  3. 線上還原: DB2 支援 RESTORE ... ONLINE,但需資料庫已存在且表空間處於正確狀態,生產災難恢復通常採用離線還原(Drop 再建)。
  4. 日誌管理: 前滾需歸檔日誌。若日誌在 TSM,可用 OVERFLOW LOG PATH 指定本地暫存目錄,或配置 userexit 腳本自動從 TSM 取回。
  5. 演練頻率: 建議每季度一次全流程演練(含 Drop DB),每月一次表空間級還原演練。
  6. 監控指標: 備份耗時、吞吐量、備份失敗率、還原演練 RTO/RPO 達成率。

六、快速參考命令卡片

操作命令模板
離線全量db2 backup db <DB> use tsm
線上全量db2 backup db <DB> online use tsm
線上累積增量db2 backup db <DB> online incremental use tsm
線上差異增量db2 backup db <DB> online incremental delta use tsm
查看歷史db2 list history backup all for <DB>
還原歷史文件db2 restore db <DB> history file use tsm taken at <TS> buffer 100
獲取還原建議db2ckrst -d <DB> -t <TS> -r database
增量還原db2 restore db <DB> incremental use tsm taken at <TS> buffer 100
前滾至時間點db2 rollforward db <DB> to <ISO_TS> on all nodes and stop
前滾至最新db2 rollforward db <DB> to end of logs and complete overflow log path ('<PATH>')

將本手冊納入運維知識庫,定期演練,讓 DB2 備份還原成為團隊的「肌肉記憶」,從容應對數據災難。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved