db2日志模式、備份歸檔、恢復解析


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   可以看到備份的紀錄

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM