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

DB2 資料庫備份與還原完整操作手冊:離線/線上備份、增量備份、前滾復原與含日誌備份

     編輯:DB2 教學

一、啟用歸檔日誌模式 (前置作業)

欲使用線上備份與增量備份,必須先將資料庫設為歸檔日誌模式:

# 1. 設定鏡像日誌路徑
db2 update db cfg for <dbname> using MIRRORLOGPATH /home/db2inst1/mirror_log/

# 2. 確認設定
db2 get db cfg for <dbname>

# 3. 啟用用戶出口 (User Exit)
db2 update db cfg for <dbname> using USEREXIT ON

# 4. 啟用日誌保留 (歸檔)
db2 update db cfg for <dbname> using LOGRETAIN ON

# 5. 啟用增量備份追蹤
db2 update db cfg for <dbname> using TRACKMOD ON

# 6. 重啟實例生效
db2stop force
db2start

# 7. 首次必須離線完整備份 (否則會報 SQL1116N)
db2 backup db <dbname> to /home/db2inst1/off_back

二、線上備份與增量備份

# 線上完整備份
db2 backup db <dbname> online to /home/db2inst1/on_back/

# 線上增量備份
db2 backup db <dbname> online incremental to /home/db2inst1/on_back/

# 查看備份歷史
db2 list history backup all for <dbname>

# 記下日誌路徑供 rollforward 使用
db2 get db cfg for <dbname> | grep -i logpath

三、災難復原演練:還原與前滾

情境 A:標準增量備份還原 (不含日誌)

# 1. 模擬災難:刪除資料庫
db2stop force; db2start; db2 drop db <dbname>

# 2. 使用 db2ckrst 取得建議還原順序
db2ckrst -d <dbname> -t 20070608032820

# 3. 還原完整備份
db2 restore db <dbname> incremental from /home/db2inst1/on_back taken at 20070608032820

# 4. 依序還原增量備份 (注意:必須按時間順序,先完整後增量)
#    db2ckrst 輸出已列出正確順序

# 5. 前滾日誌至最新
db2 rollforward db <dbname> to end of logs and complete overflow log path ('/home/db2inst1/log')

關鍵提醒: 增量還原順序必須遵循 db2ckrst 建議,錯誤順序會導致 SQL2574N。

情境 B:含日誌備份 還原 (INCLUDE LOGS)

備份時加入 INCLUDE LOGS,還原可一次完成資料與日誌,簡化流程:

# 備份階段
db2 backup db <dbname> online to /home/db2inst1/on_back/ INCLUDE LOGS
db2 backup db <dbname> online incremental to /home/db2inst1/on_back/ INCLUDE LOGS

# 災難發生後
db2stop force; db2start; db2 drop db <dbname>

# 還原:AUTOMATIC 會自動尋找完整+增量鏈,LOGTARGET 指定日誌寫入位置
db2 RESTORE DB <dbname> INCREMENTAL AUTOMATIC \
  FROM /home/db2inst1/on_back/ TAKEN AT 20070612070526 \
  LOGTARGET /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/

# 前滾完成
db2 rollforward db <dbname> to end of logs and complete

四、常見錯誤與最佳實務

錯誤/現象原因與對策
SQL1116N資料庫處於 backup pending,需先做離線完整備份才能啟用線上備份
SQL2574N增量還原順序錯誤,務必依 db2ckrst 建議順序執行
日誌不足導致 rollforward 失敗確保 LOGRETAIN=ON、MIRRORLOGPATH 設定、備份保留足夠日誌檔
還原後資料庫無法連線執行 db2 rollforward ... complete 結束前滾狀態

五、自動化備份腳本建議

  • 每日排程:線上完整備份 (週日) + 線上增量備份 (週一~六)
  • 備份檔案與日誌異地複製 (NFS/SCP/雲端儲存)
  • 定期演練還原流程,驗證 RTO/RPO
  • 監控 db2 list history 與 db2ckrst 輸出,確保備份鏈完整
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved