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

DB2 基礎:使用重導向增量還原實現資料庫時間點恢復

     編輯:DB2 教學

前言

上一篇介紹了完整備份的重導向還原。但若災難發生時,完整備份無法涵蓋到故障前一刻的資料,且資料庫必須在另一台伺服器恢復,該如何處理?

前提:資料庫啟用前滾恢復(logretain=ON)與增量備份(trackmod=ON),備份集(完整、線上增量、線上增量 Delta)與日誌檔已備份至遠端機器。此時可執行重導向增量還原,接著執行前滾恢復,將資料庫恢復至災難發生前的狀態。

增量備份類型回顧

  • 增量備份:包含自上次完整備份以來的所有變更。
  • 增量 Delta 備份:包含自上次任意備份(完整或增量)以來的所有變更。

還原時指定 INCREMENTAL AUTOMATIC,DB2 會自動套用完整備份與所需增量映像,無需逐一下令。

Windows 實戰完整流程

場景:來源實例 PROD,目標實例 MYINST,使用 SAMPLE 資料庫,位於 D 槽。

1. 來源端:建立資料庫並啟用關鍵參數

set DB2INSTANCE=PROD
db2start
db2sampl
db2 update db cfg for sample using logretain on
db2 update db cfg for sample using trackmod on
db2 backup db sample

完整備份時間戳:20021022205203。

2. 來源端:執行線上增量備份

db2 connect to sample
db2 insert into sales values ('10/21/2002','GOUNOT','Ontario-South',3)
db2 insert into sales values ('10/23/2002','GOUNOT','Ontario-North',7)
db2 insert into sales values ('10/24/2002','GOUNOT','Quebec',4)
db2 insert into sales values ('10/25/2002','GOUNOT','Manitoba',2)
db2 backup db sample online incremental

增量備份時間戳:20021022205237。

3. 來源端:執行線上增量 Delta 備份

db2 connect to sample
db2 insert into sales values ('10/28/2002','LEE','Ontario-South',5)
db2 insert into sales values ('10/28/2002','LEE','Ontario-North',1)
db2 backup db sample online incremental delta

Delta 備份時間戳:20021022205302。此時備份目錄含三個映像檔。

4. 來源端:最後交易(未納入備份,需靠日誌前滾)

db2 connect to sample
db2 insert into sales values ('10/31/2002','LUCCHESSI','Ontario-South',9)
db2 insert into sales values ('10/31/2002','LUCCHESSI','Quebec',2)
db2 insert into sales values ('10/31/2002','LUCCHESSI','Manitoba',7)
db2 connect reset

5. 目標端:啟動重導向增量還原

set DB2INSTANCE=MYINST
db2start
db2 restore db sample incremental automatic from d taken at 20021022205302 to d redirect

INCREMENTAL AUTOMATIC 讓 DB2 自動套用完整、增量、Delta 三個映像。

6. 目標端:重新定義三個預設表空間容器

db2 set tablespace containers for 0 using (path 'd:\ts0con1')
db2 set tablespace containers for 1 using (path 'd:\ts1con1')
db2 set tablespace containers for 2 using (path 'd:\ts2con1')

7. 完成還原

db2 restore db sample continue

資料庫進入前滾掛起狀態,必須前滾日誌才能存取。

8. 複製日誌檔至目標端

db2 get db cfg for sample
# 記下 logpath 路徑
copy PROD\NODE0000\SQL00001\SQLOGDIR\*.* D:\MYINST\NODE0000\SQL00002\SQLOGDIR

9. 執行前滾恢復至日誌末端

db2 rollforward db sample to end of logs and stop

10. 驗證恢復結果

db2 list db directory
db2 connect to sample
db2 list tablespace containers for 0
db2 list tablespace containers for 1
db2 list tablespace containers for 2
db2 select * from sales
db2 connect reset
db2 terminate
db2stop
set DB2INSTANCE=PROD
db2stop

關鍵成功因素

  • 來源端必須啟用 logretain 與 trackmod,並定期備份日誌檔至異地。
  • 目標端還原時使用 INCREMENTAL AUTOMATIC 簡化多映像套用流程。
  • 日誌檔複製路徑必須精確對應目標實例的 logpath。
  • 前滾指令 TO END OF LOGS AND STOP 確保應用所有已歸檔與線上日誌。

結語

重導向增量還原結合前滾恢復,是 DB2 異地災難恢復的標準方案。熟練掌握完整→增量→Delta 備份鏈與日誌管理,才能在關鍵時刻將資料庫精準恢復至故障前一刻,將資料損失降至最低。

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