DB2的日誌分為兩種模式,日誌迴圈與歸檔日誌,也就是非歸檔和歸檔模式。下面就具體介紹一下這兩種方式以及和備份歸檔設定的關係。
一、日誌迴圈
這是預設,也就是非歸檔模式,這種模式只支援backup offline)離線備份,在備份過程中需要DB2停止服務。
在DB2中查看資料庫設定,如發現如下資訊
$db2 get db cfg for db_name |grep -i log 結果如下: Log retain for recovery enabled (
LOGRETAIN) = OFF
User exit for logging enabled (USEREXIT) = OFF
HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC
First log archive method
(LOGARCHMETH1) = OFF
則說明為非歸檔模式, 預設情況下為迴圈日誌
在這種模式下進行離線備份需要注意:
1、停止應用對DB2的訪問。可以通過db2 list applications命令查看現有的串連,然後通過db2 force application命令來結束串連。另外通過db2 deactivate database命令來確保資料庫未處於活動狀態。
2、通過db2 backup db 資料庫名 命令來對資料庫進行備份。
二、歸檔日誌
歸檔日誌不是預設的,需要配置後才會生效,這種模式下的資料庫是可恢複的資料庫,支援線上備份、前滾恢複和崩潰恢複。
配置DB2歸檔記錄模式主要是要修改Log retain for recovery enabled和First log archive method這兩個參數。
修改參數update更新參數)後,查看資料庫是如下設定
$db2 get db cfg for db_name |grep -i log
Log retain for recovery enabled (LOGRETAIN) = RECOVERY
User exit for logging enabled (USEREXIT) = OFF
HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC
First log archive method (LOGARCHMETH1) = LOGRETAIN
注意這裡First log archive method的參數LOGRETAIN只表明你開啟了歸檔,還需進一步設定才能正常備份
下面需要進一步指定歸檔目錄的路徑
更改歸檔目錄:$db2 update db cfg for db_name using LOGARCHMETH1 "disk:/archive/db_name_db_log"
使用歸檔日誌,當記錄檔滿時,會自動對它進行歸檔,歸檔的目的地就是Logarchmeth1設定的位置。歸檔記錄檔之後,必須人工將無用的歸檔日誌刪除,以便新的記錄檔可以複用磁碟空間。每當記錄檔已滿,DB2 就開始將記錄寫至另一個記錄檔,並且不斷建立新記錄檔。
如果在歸檔記錄檔時發生錯誤,歸檔將暫掛一段時間,此時間由“Log archive retry Delay (secs)” ARCHRETRYDELAY資料庫配置參數指定,還可以使用“ Number of log archive retries on error ”NUMARCHRETRY 資料庫配置參數來指定 DB2 嘗試將記錄檔歸檔到主要或輔助歸檔目錄的次數,然後它再嘗試將記錄檔歸檔到容錯移轉目錄由“ Failover log archive path” FAILARCHPATH 資料庫配置參數指定)。
還有就是容易遇見資料庫交易記錄已滿導致備份出錯的問題,這是可以查看這三個參數
Log file size (4KB) (LOGFILSIZ) = 8192
Number of primary log files (LOGPRIMARY) = 10
Number of secondary log files (LOGSECOND) = 4
並適當調整記錄檔大小和主輔日誌的檔案個數。
最後就是要注意這兩個參數的設定
Options for logarchmeth1 (LOGARCHOPT1) =
Second log archive method (LOGARCHMETH2) =
有以下幾種情況:
1、Logarchmeth1設定為LOGRETAIN,Logarchmeth2設定為OFF
這時歸檔日誌位置就是DB2資料庫日誌的位置,需要人工幹預歸檔日誌的轉移和空間維護工作
2、Logarchmeth1設定為USEREXIT,Logarchmeth2設定為OFF
這時歸檔日誌的管理交由USEREXIT來處理,通過設定編譯USEREXIT可以實現相對複雜一些的歸檔管理方式
3、Logarchmeth1設定為指定目錄<Directory>,Logarchmeth2設定為OFF
歸檔日誌的工作將會自動進行,需要歸檔日誌將會被自動歸檔到<Directory>指定的位置,由于歸檔是自動進行,DB2的日誌目錄中只有正常logprimary+logsecond個數的資料庫日誌。
4、Logarchmeth1設定為<Directory1>,Logarchmeth2設定為<Directory2>
歸檔日誌的工作將會自動進行,需要歸檔日誌將會被自動歸檔到<Directory1>和<Directory2>指定的位置,也就是會產生兩份歸檔日誌。由于歸檔是自動進行,DB2的日誌目錄中只有正常logprimary+logsecond個數的資料庫日誌。對效能有一定的影響。
<Directory1>或者<Directory2>都可以設定為TSM。一般推薦<Directory1>為檔案系統,<Directory2>設定為TSM,這樣既可以歸檔到TSM離線儲存,又可以線上使用檔案系統中的歸檔日誌,比較方便。
注意:設定Logarchmeth1和Logarchmeth2後,資料庫會進入backup pending狀態,必須進行一次離線備份,資料才會進入recovery模式並且正常工作。
三、備份與恢複
1、簡單的冷備與恢複
$ db2 backup db [dbname] to 路徑
$ db2 restore db [dbname] from 路徑 taken at 時間戳記
2、線上熱備與恢複
$ db2 backup db dbname online to 路徑 include logs
$ db2 restore db dbname from 路徑 taken at 時間戳記
$ db2 "rollforward db dbname to 2013-02-31-20.00.00.000000 using local time and complete overflow log path (/backup/logs)" 前滾日誌恢複至指定時間點
3、查看備份記錄
$ db2 list history backup all for dbname 可以看到備份的紀錄
附:DB2Database Backup恢複的概念和知識點
備份類型:離線備份也稱冷備份或離線備份)、聯機備份也稱熱備份或線上備份)、完全備份、增量備份也稱累積備份)、差異備份
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/221Z92I6-0.jpg" title="beifenyuanlitu.jpg" width="650" style="padding:0px;margin:0px;vertical-align:top;border:none;" alt="160826301.jpg" />
Database Backup檔案結構
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/221Z92391-1.jpg" title="222資料備份檔案結構.jpg" width="650" style="padding:0px;margin:0px;vertical-align:top;border:none;" alt="161123967.jpg" />
恢複類型:崩潰恢複、版本恢複、前滾恢複任意時間點恢複,恢複到最近時間點)
恢複情形:完全恢複、不完全恢複
手動恢複資料庫的順序
日誌類型:迴圈日誌預設)、歸檔日誌活動紀錄、線上歸檔日誌、離線歸檔日誌)
日誌類型與恢複類型:迴圈日誌只支援崩潰恢複和版本恢複,歸檔日誌支援所有類型的恢複
凡是聯機備份產生的備份組在恢複時都需要使用歸檔日誌,歸檔日誌方式是是允許使用者執行前滾rollforward)恢複的唯一方法。
前滾的時間要在最小恢復點之後,最後的事務提交時間點之前。
本文出自 “滴水穿石” 部落格,請務必保留此出處http://xjsunjie.blog.51cto.com/999372/1337515