DB2數據庫在線備份還原筆記

DB2數據庫在線備份還原筆記

數據庫在線增量備份

   由於一般客戶的生產系統數據量都很大,所以頻繁的進行數據庫或表空間的全量備份在空間存儲上變得不可行。DB2 支持兩種增量的備份,一種是增量備份(comulative backup),另一種是差異備份(deltabackup).總的說來,增量的備份(包括增量備份和差異備份),在其備份映像文件中只包含自上次進行備份以來有過更新的頁,除更新的數據和索引頁之外,每個增量備份映像還包含通常存儲在完全備份映像中的初始數據庫元數據(例如,數據庫配置、表空間定義和數據庫歷史記錄等)。增量備份和差異備份的區別在於無所謂的上次備份的類型不同,比如增量備份只備份自上次全備以後發生過變化的頁,而差異備份則備份自上次任何中備份(可能是全量備份、增量備份、差異備份)以來的變化。

        若要對數據庫增量備份需要打開數據庫的TRACKMOD配置參數,也就是把其值改成on,默認是off。當此參數值設置爲on時,數據庫管理器跟蹤數據庫修訂,以便backup實用程序可以檢測到數據庫頁的那些子集必須通過增量備份來檢查並可能包括在備份映像中。

創建數據庫:


db2 create db mydb using codeset GB2312 territory CN pagesize 8192


spacer.gif

創建數據庫表:

db2 "create table t1(id integer,name varchar(10))"   

插入內容:

db2 "insert into db2inst1.t1 values(1,'a')"

spacer.gif

spacer.gif

開啓歸檔模式:

        db2 update database configuration for mydb using logarchmeth1    DISK:/home/db2inst1/logs/  

spacer.gif

開啓增量備份模式:

      db2 update database configuration for mydb using trackmod  on       //啓用增量備份功能

     db2 get db cfg for  mydb  |grep  -i trackmod                        //查看是否開啓增量模式

spacer.gif

    #db2stop force   

    #db2start 


    //修改配置參數後重啓數據庫方可生效。

  #db2 backup db mydb to /home/db2inst1/backup             //開始上面參數後,數據庫處於backup pending狀態,要求做數據庫的離線備份,否則會提示SQL1116N錯誤。

spacer.gif

聯機全量備份數據庫:

$ mkdir  online
$cd online/
$ db2 backup db mydb online include logs

 db2 backup db mydb online to /home/db2inst1/backup/online/ include logs

    spacer.gif

插入測試表:

spacer.gif

執行增量備份:

 db2 backup db mydb online incremental include logs                    //增量備份的命令

db2 backup db mydb online incremental to /home/db2inst1/online/ include logs  //指定備份文件存放目錄。

db2 backup db mydb online incremental  delta include logs          //差異備份


spacer.gif

再次插入測試表內容:

db2 "insert into db2inst1.t2 values(4,'d')"

spacer.gif

[db2inst1@zxt-02 online]$ db2 backup db mydb online incremental to /home/db2inst1/online/ include logs

再次執行增量備份:

注:(也可爲差異備份效果一樣)

spacer.gif


如果想查看數據庫的歷史備份還原情況,可以使用 帶有  db2 list history backup all  命令,對於備份映像信息來說,類型N代表在線全備,O 代表在線增量備份,E代表在線差異備份,類型F代表脫機全備,I代表脫機增量備份,D代表投機差異備份。

在線增量還原:

    假如備份映像有N個,一般會執行N+1次復原才能完成整個復原操作。在手工還原期間,用戶必須對復原涉及的每個映像手工發出還原命令,按照以下順序完成此操作:最後一個、第一個、第二個、第三個以此類推,並且包括最後一個映像(即:再次執行還原最後一個)。

    首先對最後一個備份映像執行復原操作,通過使用restore database命令的taken at timestamp 選項來指定目標映像。首先進入到/home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/中,此路徑是示例數據庫mydb的活動日誌目錄。在此目錄下,刪除所有的日誌文件。注意,生產系統不能刪除活動日誌,否則數據庫會宕機。本示例是爲了演示如何還原數據庫,刪除日誌後隨即執行還原,爲了更清晰的看到如何利用備份文件中的日誌進行還原,故刪除了以前的活動日誌。通過 restore database 命令進行復原,具體操作如下。

手工增量還原第一步:

db2 restore db mydb incremental taken at    20151023140237    logtarget  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/

    spacer.gif

手工增量還原第二步:

db2 restore db mydb incremental taken at    20151023134213    logtarget  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/

spacer.gif

手工增量還原第三步:

db2 restore db mydb incremental taken at    20151023135526    logtarget  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/

spacer.gif

手工增量還原第四步:

db2 restore db mydb incremental taken at    20151023140237    logtarget  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/

spacer.gif

還原完成,進行回滾:

 db2 rollforward db mydb to end of logs and stop 

db2 "rollforward db mydb to end of logs and stop overflow log path(/home/db2inst1/log)" //指定日誌釋放目錄

注意:回滾時若數據庫活動日誌目錄中還存在日誌數據庫還原程序會滾動到最新的日誌日期。

spacer.gif

db2 restore db mydb   logs  incremental  taken at 20151023134213   logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/       //從備份文件中提取數據庫日誌文件。

至此還原完成。



在線自動增量還原


   如果在還原時指定AUTOMATIC選項,則將對數據庫進行自動還原工作。只要執行一次還原操作就可以了,實際上是數據庫管理器自動完成了像手工還原數據庫的那些操作。對於自動增量還原,只在指定要使用的目標映像(最後一個映像)時發出帶AUTOMATIC選項的RESTORE命令一次。然後DB2使用數據庫歷史記錄來確定餘下的必需備份映像並還原它們。

    首先進入示例數據庫的活動日誌目錄。在此目錄下,刪除所有對的日誌文件。注意,生產系統不能刪除活動日誌,否則數據庫會宕機。本示例是爲了演示如何還原數據庫,刪除日誌後隨即執行還原,爲了更清晰的看到如何利用備份文件中的日誌進行還原,故刪除了以前的活動日誌。

    先對最後一個增量備份映像(時間戳   )進行還原操作,通過使用RESETORE DATABASE 命令的TAKEN  AT TIMESTAMP選項來指定目標映像,並使用INCREMENTAL AUTOMATIC 選項來進行自動增量還原。

方式一:

    db2 restore db mydb incremental automatic taken at 20151023140237             //自動還原增量備份文件

  至此還原工作已經完成,接下來需要對示例數據庫進行前滾恢復操作。爲了進行前滾恢復,需要從每個個備份映像中分別恢復日誌文件。  可以用還原命令選擇只還原保存在備份映像中的日誌文件。要執行此操作,可以使用RESTORE DATABASE 命令的 LOGTARGET選項指定LOGS選項。以此方式還原日誌文件時如果還原操作遇到任何問題,則還原操作失敗並返回錯誤。

db2 restore db mydb   logs  incremental  taken at 20151023134213   logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/       //從備份文件中提取數據庫日誌文件。

前滾日誌:

 db2 rollforward db mydb to end of logs and stop 

方法二:

   db2 restore db mydb incremental automatic from /home/db2inst1/backup/online/  taken at 20151030133636  logtarget  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/

    //使用此命令可直接自動還原增量備份到指定時間點,不需要單獨提取每個備份映像中的數據庫日誌來做回滾,直接回滾即可。


前滾日誌:

 db2 rollforward db mydb to end of logs and stop 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章