20120801DB2數據庫備份與恢復

http://db365.net/home.php?mod=space&uid=19鑑於CSDN無故刪除博文,本博客不再更新,暫時遷至http://www.db365.net


商業智能羣199567325,2012年8月1號《DB2數據庫備份與恢復》,講解者:趙堅密Jimmy([email protected])。

講課方式,YY頻道號:85536471


YY頻道每週三講解,具體請加QQ羣199567325下載講課錄音。


 

DB2數據庫備份與恢復

 

 

 

 

 

 

 

 

 

 

 

 

趙堅密

2012-7-29

 

 

【講座預告】每週三晚八點半在YY頻道85536471免費講解數據庫與商業智能BI相關知識。詳情見http://blog.csdn.net/zhaojianmi1/article/details/7756828

 


版本記錄

版本號.

版本日期

修訂人

修訂簡述

說明

V1.0

2008-12-05

 

創建文檔,並描述了數據庫如何脫機和聯機備份以及恢復等

 

 

2009-04-03

 

 

 

 

2012-07-29

 

日誌類型

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目錄

第一章     概述...5

1.1    DB2日誌類型...5

1.1.1   循環日誌...5

1.1.2   歸檔日誌...5

1.1.3   無限日誌...6

1.2    日誌相關參數...7

第二章     脫機備份...8

2.1    首先確保沒有用戶使用DB2.8

2.2    強迫斷開應用連接...8

2.3    執行備份命令:...8

2.4    檢查備份成功:...8

第三章     聯機備份...10

3.1    查看備份歷史...10

3.2    如果是循環日誌,需要先修改成歸檔日誌...10

3.3    聯機備份...11

3.3.1   聯機備份表空間...11

3.3.2   聯機備份數據庫...11

3.4    備份歸檔日誌文件...12

第四章     從聯機備份中恢復...13

4.1    恢復並前滾整個數據庫...13

4.1.1   恢復數據庫到某一個時間點...13

4.1.2   前滾至日誌結束...13

4.1.3   前滾至某個時間點...14

4.2    恢復表空間...14

4.2.1   恢復表空間到某一個時間點...14

4.2.2   前滾至某一個時間點...14

第五章     增量備份和恢復...15

5.1    增量備份...15

5.1.1   打開 TRACKMOD.. 15

5.1.2   執行完全數據庫備份作爲增量備份的基礎...16

5.1.3   聯機備份數據庫...16

5.1.4   增量備份數據庫...16

5.1.5   delta增量備份數據庫...16

5.2    增量恢復...17

5.2.1   自動從增量備份中恢復...17

5.2.2   前滾到日誌結束...17

第六章     帶有include logs選項的聯機備份和恢復... 18

 


 

第一章          概述

DB2有兩種備份模式:脫機(冷)備份和聯機(熱)備份。脫機要求所有應用斷開與數據庫的連接,聯機允許在備份的過程中繼續執行事務。

DB2有兩種日誌模式:循環和歸檔日誌記錄。當選擇循環日誌(數據庫默認日誌模式)時,只能執行脫機備份;如果選擇的是歸檔日誌,可以進行聯機備份和增量備份。

下面幾個章節將分別說明如何進行脫機備份、聯機備份。

1.1    DB2日誌類型

數據庫中有兩類日誌:

    循環日誌

    歸檔日誌

1.1.1     循環日誌

循環日誌是db2默認的。這種類型的日誌以循環的模式重用日誌。

在這種模式下,只要某個日誌文件中包含的所有事物提交。就是說,如果日誌仍然是活動日誌,那麼他就不可以被重用。循環日誌包括兩部分:

    主日誌文件

    輔日誌文件

主日誌預先分配,輔日誌只有在需要的時候才分配。

主日誌文件和輔日誌文件的數目有LOGPRIMARY和LOGSECOND來決定。

1.1.2     歸檔日誌

歸檔日誌要求用戶經常保存日誌。所有日誌文件將保留下來。所以日誌目錄(或歸檔目錄)將包含越來越多的日誌文件。

活動日誌:如果某個日誌滿足以下條件中的任一個,就屬於活動日誌:

    包含尚未提交或回滾的事物

    包含已經提交但是更改尚未寫到磁盤上的事物

在線歸檔日誌:包含已提交且已寫到磁盤上的日誌。這些日誌與活動日誌放在相同的目錄。

離線歸檔日誌:已經從活動日誌目錄轉移到另一個目錄上的歸檔日誌。

要設置日誌爲歸檔模式,需要設置LOGARCHMETH1參數爲以下任意情況:

   LOGRETAIN   日誌文件將被保留在活動日誌目錄中。

   USEREXIT   日誌的歸檔和檢索是由用戶提供的用戶出口程序自動執行,這個出口程序必須由db2uext2調用。用於將在線歸檔日誌移動到與活動日誌目錄不同的一個目錄中。當在ROLLFORWARD操作期間需要離線歸檔日誌時,這個程序還可以用於將離線歸檔日誌取出到活動日誌目錄中。

   DISK:directory_name   使用與USEREXIT相同的算法。db2不調用用戶出口程序,而是自動將日誌從活動日誌歸檔到指定目錄。

   TSM:[management class name]   使用與USEREXIT相同的算法。日誌被歸檔到本地TSM服務器上。

   VENDOR:library_name   使用與USEREXIT相同的算法。日誌使用指定供應商的庫來歸檔。

歸檔日誌不是默認的日誌工作方式,但它是允許用戶執行前滾(roll forward)回覆的唯一方法。

1.1.3     無限日誌

採用循環日誌或者歸檔日誌,日誌目錄均可能被填滿。如果啓用無限日誌,db2就會在一個日誌被填滿時立即歸檔該日誌。他不會等到日誌中所有事物都被提交且寫入磁盤。這樣可以保證活動日誌目錄永遠不會被填滿。但是這樣可能延遲緊急事故恢復時間,所以不建議採用。如果要啓用:

    將LOGSECOND數據庫參數設爲-1

    啓用歸檔日誌模式

1.2    日誌相關參數

LOGPRIMARY

LOGSECOND

LOGFILSIZ:用於指定一個日誌文件的大小(4kb頁的個數)

LOGBUFSZ

NEWLOGPATH

SOFTMAX:軟檢查點,是個百分數,例如60%表示日誌文件寫滿60%時,數據庫執行checkpoint操作,把內存中的已提交的數據(髒頁)寫到磁盤

MINCOMMIT

LOGARCHMETH1:第一個日誌歸檔方法

LOGARCHMETH2

MIRRORORLOGPATH

TRACKMOD:啓用增量備份

通過命令update db cfg命令更改參數。

 

啓用了歸檔日誌的數據庫稱爲可恢復數據庫。

循環日誌的數據庫稱爲不可恢復數據庫。


 

第二章          脫機備份

2.1    首先確保沒有用戶使用DB2

  $db2 list applications fordb samplesample是數據庫名稱,下面均以這個爲例

2.2     強迫斷開應用連接

  db2 force application (1,2)

2.3    執行備份命令:

db2 backup db sample to /db2file/bakup(路徑)

備份成功,將會返回一個時間戳。

Backup successful. The timestamp for thisbackup image is : 20081205153817  

2.4    檢查備份成功:

db2 connect to sample

db2 list history backup allfor sample

可以看到多了這個備份的記錄。

$ db2 list history backup all for sample

 

                    List History File for sample

 

Number of matching file entries = 1

 

 

 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID

 -- --- ------------------ ---- --- ------------ ------------ --------------

  B  D  20081205153817001   F    D  S0000000.LOG S0000000.LOG 

 ----------------------------------------------------------------------------

  Contains 4 tablespace(s):

 

  00001 SYSCATSPACE                                                          

  00002 USERSPACE1                                                           

  00003 SYSTOOLSPACE                                                          

  00004 IBMDB2SAMPLEREL                                                      

 ----------------------------------------------------------------------------

    Comment: DB2 BACKUP SAMPLE OFFLINE                                       

 Start Time: 20081205153817

   End Time: 20081205153832

     Status: A

 ----------------------------------------------------------------------------

  EID: 4 Location: /db2db/bakup

 


 

第三章          聯機備份

       聯機備份只要求備份數據文件和控制文件。脫機數據庫的備份單位是整個數據庫,而聯機備份的備份單位是一些或全部表空間。

       即使想執行聯機備份,第一次也需要執行一次全庫備份。如果日誌模式已經是歸檔日誌,並且做過完全脫機備份,那麼可以直接從第三步開始進行聯機備份。

3.1    查看備份歷史

db2 list history backup all forsample

3.2    如果是循環日誌,需要先修改成歸檔日誌

1、更新日誌類型爲歸檔日誌

db2 update db cfg for sample usinglogarchmeth1 logretain

會提示如下信息:

DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

SQL1363W One or more of the parameters submitted for immediate modification

were not changed dynamically. For these configuration parameters, all

applications must disconnect from this database before the changes become

effective.

2、確認是否修改成功

$ db2 get db cfg for sample

 

關閉然後再次啓動數據庫,使配置更改生效。設置成歸檔模式以後,還需要執行完全脫機備份。如果沒有執行該備份,您將收到下面嘗試連接數據庫的錯誤:

$ db2 connect to sample

SQL1116N  A connection to or activation of database "SAMPLE" cannot be made

because of BACKUP PENDING.  SQLSTATE=57019

脫機備份詳見上面的步驟。

3.3    聯機備份

執行完上述兩步驟之後,我們就可以進行聯機備份了,聯機備份包括表空間級和數據庫級的備份:

3.3.1     聯機備份表空間

db2 backup database sampletablespace USERSPACE1 online to /db2file/bakup

說明:USERSPACE1爲你的表空間名稱

備份成功後,會返回一個時間戳:

Backup successful. The timestampfor this backup image is : 20081205154421

3.3.2     聯機備份數據庫

db2 backup database sample onlineto /db2file/bakup

備份成功後,會返回一個時間戳:

Backup successful. The timestampfor this backup image is : 20081205154616

3.4    備份歸檔日誌文件

歸檔日誌文件的備份很重要,我們除了在線備份數據庫以外,需要將歸檔日誌也備份,這樣才能保證我們完全恢復數據庫。

如果我們採用一個月一次數據庫全備份,每天一個差異增量備份,如果我們沒有備份歸檔日誌文件,那麼我們只能恢復到最新的一個差異增量備份的點,發生意外的當天的數據就無法恢復。如果我們備份了歸檔日誌,雖然我們今天還沒有進行增量備份,我們完全可以通過歸檔日誌,將日誌回滾到日誌末尾的方式來恢復整個數據庫,保證恢復到發生意外的那個時間點,最大化的減少數據的丟失。


 

第四章          從聯機備份中恢復

要在 DB2 UDB 中執行前滾恢復,必須使用歸檔日誌記錄。在數據庫的恢復期間,該記錄的使用具有排它性。您可以在數據庫級或表空間級上進行恢復。您將可以恢復備份映像和前滾來完成恢復處理,或者讓數據庫停留在掛起狀態。有兩種類型的前滾:

前滾到日誌結束。

前滾到某個時間點。

在 DB2 UDB 中,有兩個選項來執行恢復:Control Center 和 CLP,Control Center比較簡單,就不在多說,下面主要說明命令行模式:

4.1    恢復並前滾整個數據庫

4.1.1     恢復數據庫到某一個時間點

說明:恢復最新的備份時使用,需要備份歸檔日誌文件時才能使用

db2 restore database sample from"/db2file/bakup" taken at 20081205154616  without prompting;

恢復成功後,會提示如下信息:

SQL2540W  Restore is successful, however a warning"2539" was encountered

during Database Restore whileprocessing in No Interrupt mode.

4.1.2     前滾至日誌結束

說明:恢復最新的備份時使用,需要備份歸檔日誌文件時才能使用

db2 rollforward db sample to end oflogs and complete

$ db2 rollforward db sample to end of logs and complete

 

                                 Rollforward Status

 

 Input database alias                   = sample

 Number of nodes have returned status   = 1

 

 Node number                            = 0

 Rollforward status                     = not pending

 Next log file to be read               =

 Log files processed                    = S0000001.LOG - S0000001.LOG

 Last committed transaction             = 2008-12-05-15.46.23.000000 Local

 

DB20000I  The ROLLFORWARD command completed successfully.

4.1.3     前滾至某個時間點

說明:可以恢復至之前的某個時間點的前提是需要備份某個時間點的歸檔日誌文件。

db2 rollforward database sample to 2008-12-05-15.47.15.000000using local time and complete;

但有時候,對較大的數據庫執行表空間級備份會更經濟。而且恢復表空間將只要求排它使用某個表空間。其餘的表空間仍可以訪問。您可以一次恢復多個表空間。

4.2    恢復表空間

4.2.1     恢復表空間到某一個時間點

restore database sample tablespace (userspace1) online from "/db2db/bakup"taken at20081205154421 with 2 buffers buffer1024 parallelism 1 without prompting;

4.2.2     前滾至某一個時間點

rollforward database sample to 2008-12-05-16.44.21.000000using local time and complete tablespace (userspace1) online;


 

第五章          增量備份和恢復

當數據庫大小增長到 GB 和 PB 級時,所需的時間和硬件資源將極大的增長。通常,備份整個數據庫或一次備份幾個表空間是不可行的。在這種情況下,進行增量備份顯然會更好一些。但是,增量備份的恢復工作還是比較麻煩的,需要先恢復到之前最新的一次完全備份,然後再將隨後的增量備份恢復。

DB2的增量備份分兩種類型:增量備份和Delta(差異)備份。

增量備份:備份自上次完全備份以來更改過的數據;

Delta(差異)備份:備份自最近一次備份以來更改過的數據;

5.1    增量備份

5.1.1     打開 TRACKMOD

TRACKMOD此參數將跟蹤數據庫修改,以便 backup 實用程序可檢測數據庫頁的哪個子集必須由增量備份進行檢查且可能包括在備份映像中,在將此參數設置爲“YES”之後,必須執行完整數據庫備份,才能獲得可以對其執行增量備份的基線。

db2 update db cfg using trackmod YES

DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

SQL1363W One or more of the parameters submitted for immediate modification

were not changed dynamically. For these configuration parameters, all

applications must disconnect from this database before the changes become

effective.

確保在重連接生效前斷開所有應用程序的連接。

如果不配置TRACKMOD,直接進行增量備份,會報如下錯誤:

SQL2426N  The database has not been configured to allowthe incremental backup operation. Reason code = "1".

5.1.2     執行完全數據庫備份作爲增量備份的基礎

db2 backupdatabase sample to /db2file/bakup

備份成功後會返回一個時間戳。

5.1.3     聯機備份數據庫

db2 backupdatabase sample online to /db2file/bakup

備份成功後會返回一個時間戳。

5.1.4     增量備份數據庫

1、簡單命令:

db2 backup database sampleincremental to /db2file/bakup

2、帶參數的命令:

backup database sample onlineincremental to "/db2file/bakup " with 2 buffers buffer 1024parallelism 1 without prompting;

參數說明:

Parallelism(並行性):指定備份的並行性(緩衝區操作程序的數目)

緩衝區數(buffers):上面我定義了2

每個緩衝區大小(每頁大小4k)(buffer):每個緩衝區大小是1024

備份成功後,會返回一個時間戳,例如:

Backup successful. The timestampfor this backup image is : 20081205101952

5.1.5     delta增量備份數據庫

1、簡單命令:

db2 backup database sampleincremental delta to/db2file/bakup

2、帶參數的命令:

backupdatabase sample online incremental delta to "/db2file/bakup"with 2 buffers buffer 1024 parallelism 1 without prompting;

參數說明:

Parallelism(並行性):指定備份的並行性(緩衝區操作程序的數目)

緩衝區數(buffers):上面我定義了2

每個緩衝區大小(每頁大小4k)(buffer):每個緩衝區大小是1024

 

5.2    增量恢復

5.2.1     自動從增量備份中恢復

db2 restore database sampleincremental automatic from/db2file/backup taken at 20040701112735 withoutprompting

5.2.2     前滾到日誌結束

db2 rollforward database sample toend of logs and complete


 

第六章          帶有include logs選項的聯機備份和恢復

C:\Documents and Settings\db2admin>db2 create db tt on d:\

DB20000I  CREATE DATABASE命令成功完成。

 

 

C:\Documents and Settings\db2admin>db2 connect to tt

 

   數據庫連接信息

 

 數據庫服務器         = DB2/NT 9.1.0

 SQL 授權標識         = DB2ADMIN

 本地數據庫別名       = TT

 

 

C:\Documents and Settings\db2admin>db2 backup db tt online to d:\db2 compress in

clude logs

 

備份成功。此備份映像的時間戳記是:20100429104317

 

 

C:\Documents and Settings\db2admin>db2 restore db tt from d:\db2 taken at 201004

29104317 logtarget d:\db2

SQL2539W  警告!正在復原至與備份映像數據庫相同的現有數據庫。數據庫文件將被刪除。

 

 

要繼續嗎?(y/n) y

DB20000I  RESTORE DATABASE命令成功完成。

 

 

C:\Documents and Settings\db2admin>db2 rollforward db tt to end of logs and stop

 overflow log path (d:\db2)

 

                                 前滾狀態

 

 輸入數據庫別名                      = tt

 節點數已返回狀態                = 1

 

 節點號                                = 0

 前滾狀態                                    = 未暫掛

 下一個要讀取的日誌文件          =

 已處理的日誌文件                = S0000003.LOG - S0000003.LOG

 上次落實的事務                  = 2010-04-29-14.25.37.000000 Local

 

DB20000I  ROLLFORWARD命令成功完成。

 


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