DB2 V9聯機備份還原(三)

rheet1978發表於2008-07-01
聯機全量備份資料庫DB2TEST1

我們可以使用帶ONLINE選項的BACKUP命令,可以聯機備份資料庫,前提是我們使用了歸檔日誌模式。由於聯機備份期間,業務系統還可以插入、更新、刪除資料,所以只用全量聯機備份映像沒有完成恢復資料庫操作,至少還需要聯機備份期間的日誌以便進行前滾恢復,如果此時日誌沒有被妥善儲存,比如被刪除或損壞,那麼前滾操作將無法完成。所以,為了妥善儲存利用聯機備份映像還原資料庫時所需的日誌檔案,為成功恢復提供保護,我們可以在聯機備份時使用INCLUDE LOGS選項,指定在備份映像中包括復原和恢復資料庫所需的日誌檔案。也就是說,如果使用聯機備份映像進行恢復時,無需單獨查詢所需的日誌檔案以保證聯機備份的一致性,在聯機備份中已經存在了所需的日誌檔案。當執行BACKUP DB命令時指定INCLUDE LOGS選項,BACKUP實用程式將截斷當前活動日誌檔案並將必要的日誌擴充套件資料庫集合複製到備份映像中。

 

下面我們來看一下BACKUP命令的語法,具體如清單7所示:

 

- - 清單7 .備份資料庫語法
>> - BACKUP--+-DATABASE-+--database-alias - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - >
             ' – DB - - - - - - - -- - - '
 
>  -- + - - - - - - - - - - - - - - - - - - -  - - - - - - + - - - -  - - - - - - - - - - - - - - -- - - - - - - >
     ' – USER – username -- + - - - - - - - - - + - '
                       ' – USING – password - '
 
>  -- + - - - - - -  - - - - -- - - - - - - - - - - - - - - - - - + -- + -  - - - - -- - - + - - - - - - - -  - >
     |                . - , - - - - - - .    |  ' – ONLINE - '
     |                V                 |    |
     ' – TABLESPACE -- ( ---- tablespace-name -+-- ) - '
 
>  -- + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
     ' – INCREMENTAL -- + - - + - '
                    ' - DELTA - '
 
> -- + - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - -  - -+ - - >
   + -USE--+-TSM--+-- + - - - - - - - - - - - - - - - - - - - - + -- + - - - - - - - - - - - - - - + -  - -- - +
   |      '-XBSA-'  '-OPTIONS--+-"options-string"-+-'  '-OPEN--num-sessions--SESSIONS-' |
   |                         ' -@ -- file-name - - - '                                            |
   |     . - , - - - - .                                                                            |
   |     V         |                                                                                  |
   + -TO ---- + -dir-+-+ - - - - - - - - - - -  - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -  +
   |       ' -dev- '                                                                                 |
   '-LOAD--library-name--+ - - - - - - - - - - - - - - - - - - - +--+ - - - - - - - - - - - - - - - - - + - '
                         '-OPTIONS--+-"options-string"-+-'  '-OPEN--num-sessions--SESSIONS-'
                                    ' -@-- file-name --- '
 
> -- + - - - - - - - - -  - - - - -- - - - + -- + - - - - - - - - - - - - - - - - + - - - - - - - - - - - >
   ' – WITH --num-buffers--BUFFERS- '  ' -BUFFER--buffer-size- '
 
> -- + - - - - - - - -  - - - - -- - - - + - - - -  - - - - -- - - - - - - - - - - - - - - - >
   ' – PARALLELISM – n - '
 
> -- + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - >
   ' – COMPRESS -- + - - - - - - - - -  - - - - -- - - + -- + - - - -  - - - - -- - - - + - '
               ' -COMPRLIB—name -- + - - - + - '  ' -COMPROPTS--string- '
                                 ' – EXCLUDE - '
 
                                           .-EXCLUDE LOGS-.
> -- + - - - - - - - - - - - - - -  - - - - - - - - - - - + -- + - - - - - - - -- - - - - -  - - - + - >
   ' -UTIL_IMPACT_PRIORITY -- + - - - - - - - - + - '  ' -INCLUDE LOGS- '
                           ' – priority - '
 
> -- + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ><
   ' - WITHOUT PROMPTING - '

       如清單7所示,備份資料庫最簡單的命令就是

 

BACKUP DB 資料庫名

      

如果聯機備份,可以使用ONLINE選項,想包含聯機備份期間需要的日誌可以使用INCLUDE LOGS選項。可以把資料庫備份到磁碟或者磁帶上,如果儲存管理軟體使用的TSM,可以直接在備份命令中使用USE TSM選項,如果使用的第三方儲存管理軟體,可以使用LOAD選項指定第三方供應商的DLL。

 

接下來我們新開啟一個DB2CLP視窗,連上資料庫,發出帶ONLINE選項的BACKUP DB命令,聯機全量備份示例資料庫DB2TEST1,具體如清單8所示:

 

- - 清單8 .聯機備份示例資料庫DB2TEST1

 

C:\> db2 connect to db2test1

 

     資料庫連線資訊

 

      資料庫伺服器         = DB2 / NT 9.1.0

      SQL 授權標識         = RHETTE

      本地資料庫別名       = DB2TEST1

 

C:\> db2 backup db db2test1 online include logs

 

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

 

       在聯機備份資料庫期間(備份沒有完成之前),我們繼續對示例資料庫DB2TEST1進行操作,在原來的DB2CLP視窗中對TEST1表新插入一條記錄,具體如清單9所示:

 

- - 清單9 .插入測試表一條新的記錄

 

C:\> DB2 INSERT INTO TEST1 VALUES ( 3 , ' SCA ' , ' the third rows ' )

DB20000I  SQL命令成功完成。

 

 

聯機全量備份執行成功,此備份映像的時間戳記是:20070928223032。想檢視示例資料庫DB2TEST1的備份和還原歷史情況,可以使用LIST HISTORY BACKUP ALL命令,對於備份情況返回值來說,其型別N代表線上全備,O代表線上增量備,E代表線上差異備份, 型別F代表離線全備,I代表離線增量備份,D代表離線差異備份。

下面我們在DB2CLP視窗中,發出LIST HISTORY BACKUP ALL命令,返回兩條記錄,第一條記錄是我們第一次離線第一次全備,第二條是我們剛才聯機全量備份,且聯機備份映像中包含了日誌S0000001.LOG,具體如清單10所示:

- - 清單10 .檢視備份歷史記錄

 

C:\> DB2 LIST HISTORY BACKUP ALL FOR DB2TEST1

 

                    列示 DB2TEST1 的歷史記錄檔案

 

匹配的檔案條目數 = 2

 

 

 Op 物件 時間戳記+序列     型別 裝置 最早日誌    當前日誌     備份標識

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

  B  D  20070928212852001   F    D  S0000000.LOG S0000000.LOG

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

  包含 3 表空間:

 

  00001 SYSCATSPACE

  00002 USERSPACE1

  00003 SYSTOOLSPACE

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

    註釋:DB2 BACKUP DB2TEST1 OFFLINE

 開始時間:20070928212852

   結束時間:20070928212856

     狀態:A

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

  EID:2 位置:C:

 

 

 Op 物件 時間戳記+序列     型別 裝置 最早日誌    當前日誌     備份標識

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

  B  D  20070928223032001   N    D  S0000001.LOG S0000001.LOG

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

  包含 3 表空間:

 

  00001 SYSCATSPACE

  00002 USERSPACE1

  00003 SYSTOOLSPACE

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

    註釋:DB2 BACKUP DB2TEST1 ONLINE

 開始時間:20070928223032

   結束時間:20070928223037

     狀態:A

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

  EID:5 位置:C:

 

聯機備份如果採用TSM,其命令可以如下:

 

db2 backup db db2test1 online use tsm open 4 sessions include logs

 

       其中,USE TSM是關鍵字,表示備份映像將通過TSM儲存到磁帶機上,OPEN 4 SESSIONS表示,此次備份開啟4個SESSION,表現為備份映像(假如正常情況下只備份映像能放在一個檔案中)將使用4個備份映像檔案儲存。如果想使用TSM,在需要預先配置好TSM環境,這樣資料庫管理器才能使用TSM選項:

Ø         必須安裝和配置可用的 TSM客戶機和伺服器。另外,必須在每臺DB2伺服器上安裝 TSM客戶機 API。

Ø         設定 TSM 客戶機 API 使用的環境變數:DSMI_DIR、DSMI_CONFIG、DSMI_LOG。

Ø         設定TIVOLI客戶機與TSM伺服器互動所使用的密碼。具體見DB2官方文件。

另外,使用TIVOLI STORAGE MANAGER時還需要注意,對於多個備份映像使用同一個資料庫別名的情況,時間戳記和序號就成為標準名稱中的專有部分。需要查詢TSM以確定要使用的備份版本。 如果執行聯機備份操作並指定了USE TSM選項和INCLUDE LOGS選項,則當兩個程式嘗試同時寫同一臺磁帶機時,就會發生死鎖。如果正在將磁帶機用作日誌和備份映像的儲存裝置,則需要為TSM定義兩個獨立的磁帶池,一個用於儲存備份映像,另一個用於儲存歸檔日誌。

 

如果實現第三方備份軟體,比如EMC LEGATO,備份命令可以如下:

 

db2 backup db db2test1 online load /usr/lib/libnsrdb2.o open 4 sessions include logs

 

       LOAD選項後面跟的是EMC LEGATO的DLL檔案,OPEN 4 SESSIONS表示,此次備份開啟4個SESSION,表現為備份映像(假如正常情況下只備份映像能放在一個檔案中)將使用4個備份映像檔案儲存。

 

當執行備份操作時,DB2將自動為緩衝區個數、緩衝區大小和並行性設定選擇最佳值。此類值根據可用實用程式堆記憶體量、可用處理器數和資料庫配置而定。目的是最大程度上減少完成備份操作所需的時間。除非為下列BACKUP DATABASE命令引數顯式地輸入某個值,否則DB2將為其選擇一個值:

Ø         WITH緩衝區個數 BUFFERS

Ø         PARALLELISMn

Ø         BUFFER 緩衝區大小

如果未指定緩衝區數和緩衝區大小而導致DB2設定這些值,對大型資料庫的影響應該是最低的。但是,對於小型資料庫來說,會導致備份映像大幅增大。即使寫入磁碟的最後一個資料緩衝區只包含很少資料,也會將整個緩衝區寫入映像。在小型資料庫中,這表示相當一部分的映像可能是空的。還可以選擇執行以下任何操作來縮短完成一次備份操作所需的時間:

Ø         指定表空間備份。

使用指定了TABLESPACE選項的BACKUP DATABASE命令,可以備份(繼而恢復)部分資料庫。這樣便於對錶資料、索引和單獨表空間中的長型欄位或大物件(LOB)資料進行管理。

Ø         增大BACKUP DATABASE命令上PARALLELISM引數的值,以使它反映正在備份的表空間數。

PARALLELISM引數定義在壓縮備份操作期間從資料庫讀取資料和壓縮資料時,已啟動的程式或執行緒數。將每個程式或執行緒分配給特定表空間,因此,為PARALLELISM引數指定的值大於要備份的表空間數並無益處。備份完此表空間後,它會請求另一個表空間。但是應注意:每個程式或執行緒都需要記憶體CPU開銷。

Ø         增加備份緩衝區大小。

理想的備份緩衝區大小是表空間擴充套件資料塊大小的倍數加一頁。如果有多個擴充套件資料塊大小不同的表空間,則將值指定為擴充套件資料塊大小的公倍數加一頁。

Ø         增加緩衝區的數量。

使用的緩衝區至少是備份目標(或會話)的兩倍,以確保備份目標裝置無需等待資料。

Ø         使用多個目標裝置。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9524210/viewspace-366502/,如需轉載,請註明出處,否則將追究法律責任。

相關文章