本手冊涵蓋 DB2 資料庫在分區環境(DPF)下的離線全量、線上全量、線上增量/差異增量備份,以及災難恢復場景下的完整還原流程(歷史文件還原 → db2ckrst 輔助 → 分節點增量還原 → 前滾日誌),適用於 DB2 9.7+ 版本。
db2 list applications for db SAMPLE,若有連線需協調停止應用。db2stop force
db2start
db2 backup db SAMPLE use tsm
20231201103045),記錄備份 ID。db2 list history backup all for SAMPLE
db2adutl query db SAMPLE
兩者均應顯示最新備份記錄。
先備份目錄節點,再備份其他數據節點。 目錄節點包含系統目錄表空間,必須優先保護。
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,必須先做一次離線全量備份(參考第一節)解除。
db2 backup db SAMPLE online use tsm
各分區節點並行執行(db2_all "||| backup db SAMPLE online use tsm"),記錄各節點返回的時間戳(通常一致)。
db2 backup db SAMPLE online incremental use tsm
備份自上次全量備份以來所有變更頁面。體積隨時間增大,但還原鏈短(僅需 全量 + 最新累積增量)。
db2 backup db SAMPLE online incremental delta use tsm
備份自上次任意備份(全量/累積/差異)以來變更頁面。體積最小,但還原鏈長(全量 + 多個連續差異增量)。
incremental ≈ Oracle Cumulative Incremental(Level 1 Cumulative)。incremental delta ≈ Oracle Differential Incremental(Level 1 Differential)。場景:模擬資料庫損壞,需從 TSM 還原至最新一致狀態。
db2 drop db SAMPLE
每次備份均會包含歷史文件。使用最新備份的時間戳:
db2 restore db SAMPLE history file use tsm taken at 20231201103045 buffer 100
db2 list history backup all for SAMPLE 查看備份鏈。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
務必嚴格遵循順序與時間戳。
對每個建議的備份映像檔,在對應分區節點執行:
# 目錄節點
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 狀態。在目錄節點執行(自動協調所有分區):
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。db2 connect to SAMPLE
db2 "select count(*) from CORE_TABLE"
# 應用端冒煙測試
BACKUP/RESTORE 命令後加 TABLESPACE (TBS_NAME) 子句。前提:資料庫處於歸檔模式且啟用 trackmod。db2ckrst 會建議從最近的全量開始,依序應用其後所有增量,最後前滾。切勿跳過任何環節。RESTORE ... ONLINE,但需資料庫已存在且表空間處於正確狀態,生產災難恢復通常採用離線還原(Drop 再建)。OVERFLOW LOG PATH 指定本地暫存目錄,或配置 userexit 腳本自動從 TSM 取回。| 操作 | 命令模板 |
|---|---|
| 離線全量 | 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 備份還原成為團隊的「肌肉記憶」,從容應對數據災難。