db2備份恢復(backup restore)

long_small發表於2021-04-21

1.  備份恢復

1.1.  備份策略

備份架構: LAN-Free 備份

備份方式:利用 NBU 直接備份到虛擬帶庫,然後透過 Vault 將備份資料儲存到磁帶庫

備份週期:以周為備份週期,每週六,週三全備,其他每天增量備份

儲存週期:虛擬帶庫儲存 1 個月,磁帶庫上儲存 3 個月。

備份內容:資料庫 + 歸檔日誌 + 配置引數

1)  資料庫週六晚 21:00 開始做全備份,週三,週六做增量備份。

db2 update db cfg for JGEMLCDB  using  trackmod o n (引數修改及確認,增量備份需要 trackmod on

db2 BACKUP DATABASE $MY_DB2 online $MY_SCHED LOAD $MY_LIB OPEN 4 SESSIONS BUFFER 1024

 

     2 )歸檔日誌 4 小時備份一次,經過溝通,把歸檔日誌使用檔案的方式進行差異化備份,作業系統保留三天的歸檔日誌。

     

3 NBU 全備份及增量備份指令碼內容如下:

MY_DB2=JGEMLCDB

MY_LIB=/usr/openv/netbackup/bin/nbdb2.sl64

 

MY_SCHED 取變數判斷如下

 

if [ "$DB2_FULL" = "1" ] ; then

         MY_SCHED=""

elif [ "$DB2_CINC" = "1" ] ; then

         MY_SCHED="INCREMENTAL"

elif [ "$DB2_INCR" = "1" ] ; then

         MY_SCHED="INCREMENTAL DELTA"

else

         MY_SCHED=""

fi

 

NBU 備份指令碼中的備份語句

CMD_LINE="db2 BACKUP DATABASE $MY_DB2 online $MY_SCHED LOAD $MY_LIB OPEN 4 SESSIONS BUFFER 1024"

 

4 )實施過程:

 

在做 NBU 備份前,需要進行本地磁碟的離線全庫備份,否則 NBU 實施過程中會報 SQL1035N 錯誤,如下

SQL1035N  The operation failed because the specified database cannot be

connected to in the mode requested.  SQLSTATE=57019

 

本地磁碟備份,在應用不斷開情況下,實驗指令碼執行如下命令(避免應用自動連線導致最後一句執行失敗)

 

db2 connect reset

db2 force application all

db2  DEACTIVATE DATABASE JGEMLCDB

db2 backup db JGEMLCDB  to /db2data

 

以上成功之後,再做 onling 備份

 

db2 backup db JGEMLCDB online to /db2data

 

然後透過 NBU 進行備份

 

5 )歸檔日誌備份刪除

i )透過 NBU 備份刪除,需要修改引數, logarchmeth1 ,以 vendor 方式歸檔到磁帶中,進行備份刪除管理,但是本地磁碟 /db2arclog/ 看不到歸檔日誌

 

db2 update db cfg for JGEMLCDB using logarchmeth1 vendor:/usr/openv/netbackup/bin/nbdb2.sl64

      ii )經過溝通,歸檔日誌放在本地磁碟,透過 NBU 使用檔案的方式進行差異化備份,作業系統保留三天的歸檔日誌。

      修改引數

db2 update db cfg for mtrdb using logarchmeth1 Disk:db2arclog/

手工歸檔到本地磁碟,進行確認產生歸檔日誌

db2 archive log for db JGEMLCDB

建立刪除的指令碼及任務計劃(在 member0 member1 都操作)

刪除 3 天前的歸檔日誌

mkdir /home/db2sdin1/scripts

cd /home/db2sdin1/scripts

vi /home/db2sdin1/scripts/archlog_delete.sh

 

#!/bin/sh

find /db2arclog/db2sdin1/JGEMLCDB/NODE0000/LOGSTREAM0000/C0000001 -name "*.LOG" -type f -mtime +3 -exec rm {} \;

find /db2arclog/db2sdin1/JGEMLCDB/NODE0000/LOGSTREAM0001/C0000001 -name "*.LOG" -type f -mtime +3 -exec rm {} \;

 

crontab -e

 

10.49.2.10

#0 21 * * * sh  /home/db2sdin1/scripts/archlog_delete.sh

 

10.49.2.20

0 21 * * * sh  /home/db2sdin1/scripts/archlog_delete.sh


1.2.  恢復策略

 

優先採用備份介質恢復,這事最方便的方式。其次,在出現重大災難的時候,考慮從 HADR 備庫接管,這種方式有一定風險。

需要 確保 資料庫引數trackmod 設定為 on ,在備份軟體裡面設定 2 個排程策略。

Db2 分三種恢復方式,如下:

 

恢復型別:

DB2 考慮到了下列恢復型別:

 

崩潰恢復。這種型別的恢復透過撤銷(回滾)未提交的事務來防止資料庫處於不一致狀態。 請再次考慮上一頁中的示例。如果在 COMMIT 語句之前發生電源故障, 那麼下一次 DB2 重新啟動,再訪問該資料庫時, DB2 將先回滾( ROLLBACK INSERT 語句, 然後回滾( ROLLBACK DELETE 語句。(注:回滾語句的順序與最初執行時的順序相反。)

 

版本恢復。這種型別的恢復透過使用從 BACKUP 命令獲取的備份映像來恢復先前的資料庫版本。 恢復的資料庫將包含在執行 BACKUP 命令時所處狀態的資訊。 如果在執行備份之後針對資料庫執行進一步操作,那麼該資訊將丟失。

 

前滾恢復。這種型別的恢復透過使用完全資料庫備份,結合日誌檔案來擴充套件版本恢復。 必須先恢復備份以用作基線;然後在該備份之上應用日誌。 該過程會將資料庫或表空間恢復到某個特定時間點。前滾恢復要求啟用歸檔日誌記錄 。我們將在本教程的稍後部分中討論歸檔日誌記

 

以上第一種崩潰恢復是重啟 db2 之後,例項內部操作,無需人工干預。人工考慮需要的恢復通常是後兩種恢復方式,這兩種對應完全恢復和不完全恢復。

 

恢復步驟:

1.  restore 備份 + 歸檔日誌,其中 logtarget 指定恢復出來的歸檔日誌存放地方

db2 "restore database mtrmlc from /data/backup taken at 201 6 0331234149  logtarget  /data/backup/logs”

 

1.  然後考慮如下三種恢復級別

1)  最大程度的恢復,即 restore 全備份 + 增量備份 + 歸檔日誌 + 遍歷所有歸檔及線上日誌      Rollforward 指定 to end of logs and complete

1)  基於一部分損失的恢復,指定到相應時間,這個時間應該大於備份結尾,小於最大程度的恢復,否則報錯, to time using local time ,如下:

       db2 "rollforward DATABASE test to 20140828110021.000000 using local time"

2)  最小程度的恢復,即恢復到備份結束的時間點

       Rollforward 指定 to end of backup and stop


1.3.  備份恢復示例

從備份介質恢復:全備 + 前滾日誌

 

例如:

1)  資料庫備份時必須要加上 online include logs 選項

db2 backup database mtrmlc   online to  /data/backup  include logs

 

1)  資料庫恢復:

db2 "restore database mtrmlc from /data/backup taken at 201 6 0331234149  logtarget  /data/backup/logs”

 

2)  恢復日誌:

db2 "rollforward database JGEMLCDB  to end of logs and complete overflow log path (/data/backup/logs)"

 

4 )在測試環境進行 NBU 備份恢復測試工作

 

i) 透過 NBU 呼叫備份

ii) 進行恢復,恢復語句透過 load 指定呼叫帶庫

     db2 restore db  mtrdb load  /usr/openv/netbackup/bin/nbdb2.sl64 

  db2 rollforward db mtrdb to end of logs and complete

5 )在測試環境進行本地磁碟的備份恢復測試

       db2 backup db mtrdb  to /db2back

       db2 restore db  mtrdb from /db2back taken at 20160309174736

 db2 "rollforward database mtrdb to end of logs and complete"


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

相關文章