以下的文章主要描述的是IBM DB2 UDB 在線備份與恢復的實際操作,假如你在實際操作中遇到IBM DB2 UDB 在線備份與恢復,但是你卻不知道對其如何正確的操作,那麼以下的文章對你而言一定是良師益友。
IBM, DB2IBM, 實戰, UDB, 在線
為什麼要進行在線增量備份?
在線意味者備份的時候,允許其他的連接,而不用停掉數據庫
增量意味著,不需要每次備份一個超大的數據庫.
同時意味著你可以將數據庫恢復到崩潰前的狀態,而不是你最後一次備份時的狀態,最大可能的減少數據損失.
設置數據庫以支持在線增量備份
db2在線增量備份需要采用歸檔記錄類型,而不是循環記錄類型,而db2創建的數據庫缺省采用循環記錄類型,要設置歸檔記錄類型有兩種方法:
更改logretain為recovery或者on,
改改userexit為on
這樣db2的日志將不會循環使用,而是不斷增多,這樣才有可能進行增量備份,並將數據庫恢復到崩潰的時間點
db2增量備份需要設置tracemod為on,這樣數據庫將在物理頁上記錄更改的部分頁,做dirty標記
下面是一個腳本可以將testdb數據庫設置為支持在線備份:
- connect to testdb;
- update db cfg using logretain on;
- update db cfg using trackmod on;
- db2stop force;
- db2start;
通常應該再設置mirrorlogpath以備份db2日志鏡像:
update db cfg using mirrologpath 你認為安全的路徑
如何進行在線備份?
backup db testdb online to 備份路徑(全備份)
backup db testdb online incremental to 備份路徑(增量備份)
backup db testdb online incremental delta to 備份路徑(delta備份)
恢復
假設我們要進行這樣一個任務:把lw數據庫的在線備份恢復到目標機器的F盤中,並且重命名為loanmgr.
1.獲得備份文件的詳細信息,做好文件准備
建立"F:\db2備份數據"文件夾,直接拷貝在線備份時自動生成的目錄結構和文件:
F:\db2備份數據\LW.0\DB2\NODE0000\CATN0000\20070308\085446.001
命令行執行
db2ckbkp -h F:\db2備份數據\LW.0\DB2\NODE0000\CATN0000\20070308\085446.001
得到結果中要注意紅色的部分,如果你手頭只有一個文件,那麼就按照紅色標示建立目錄結構和文件重命名
- The proper image path would be:
- LW.0\DB2\NODE0000\CATN0000\20070308\085446.001
2.准備還原lw數據庫到新數據庫loanmgr(loanmgr不要預先建立)
restore db lw from F:\db2備份數據 taken at 20070308085446 to f into loanmgr redirect
結果
SQL1277N 復原已檢測到一個或多個表空間容器不可存取,或者已將它們的狀態設置為“必
須定義存儲器”。
DB20000I RESTORE DATABASE 命令成功完成。
- set tablespace containers for 0 using (path 'e:\db2\ts0');
- set tablespace containers for 1 using (path 'e:\db2\ts1');
3.建立tablespace 復制上面的命令,並改其中的紅色數字,直到執行到"表空間標識無效"之類的錯誤.就把表空間准備好了.
使用list tablespaces查看當前表空間狀況,檢驗一下.
開始恢復,這個過程才真正開始往表空間中寫入數據:
- restore db lw continue
特別注意的是這裡寫的是源數據庫的名稱,而不是目標數據庫的名稱.結果:
DB20000I RESTORE DATABASE 命令成功完成。
4.前滾
執行
get db cfg for loanmgr
得到結果中注意:
日志文件路徑 = F:\DB2\NODE0000\SQL00001\SQLOGDIR\
溢出日志路徑 (OVERFLOWLOGPATH) =
鏡像日志路徑 (MIRRORLOGPATH) = e:\Db2MirrorLogPath\NODE0000\
第一活動日志文件 = S0001216.LOG
將日志文件群拷貝到紅色路徑中,這些日志應該包含S0001216.LOG之後的所有文件,接著
rollforward db testdb to end of logs and complete
全部完成..