上一篇博文探討了各類恢復模式和備份類型,這一節繼續來探討如何設計備份策略。設計一個數據庫的最佳備份策略,會面臨如何選擇使用哪一種恢復模式的問題,由於恢復模式控制着備份和還原的行爲。通常來說,簡單恢復模式通常適合用於測試或開發數據庫。對於生產數據庫,最佳選擇一般是完整恢復模式,還能夠選擇大容量日誌恢復模式做爲補充。但簡單恢復模式有時也適合小型生產數據庫(尤爲是當其大部分或徹底爲只讀時)或數據倉庫使用。
若要爲特定數據庫肯定最佳恢復模式,應考慮數據庫的恢復目標和要求,數據使用方式,員工因素以及是否可對日誌備份進行管理等。
恢復目標要求 :
l
不丟失任何更改的重要程度如何?
l
從新建立丟失的數據的難易程度如何?
l
是否有兩個或兩個以上的數據庫在邏輯上必須保持一致?
員工因素 :
是否僱用系統或數據庫管理員?若是沒有,那麼由誰負責執行備份和恢復操做,如何對他們進行培訓?
數據使用方式,針對當前數據庫考慮下列問題:
l
數據庫中的數據多長時間更改一次?
l
是否有些代表顯比其餘表修改頻繁?
l
是否有關鍵生產週期?若是有,那麼在這些週期中的使用方式是怎樣的?數據庫是否會經歷插入操做和其餘更新操做的高峯期?
可能須要計劃在非高峯期進行數據備份。當大量使用 I/O 系統時,一般只需使用日誌備份。
l
數據庫是否會遇到可能沒法當即檢測到的危險更新或應用程序錯誤?
若是數據庫會遇到這些狀況,請考慮使用完整恢復模式。這可使用日誌備份將數據庫恢復到特定時間點。
什麼時候使用簡單恢復模式?
若是符合下列全部要求,則使用簡單恢復模式:
l
不須要故障點恢復。若是數據庫丟失或損壞,則會丟失自上一次備份到故障發生之間的全部更新,但你願意接受這個損失。
l
願意承擔丟失日誌中某些數據的風險。
l
不但願備份和還原事務日誌,但願只依靠完整備份和差別備份。
什麼時候使用完整恢復模式?
若是符合下列任一要求,則使用完整恢復模式(還能夠選擇使用大容量日誌恢復模式):
l
必須可以恢復全部數據。
l
必須可以恢復到故障點。
l
但願能夠還原單個頁。
l
願意承擔事務日誌備份的管理開銷。
l
數據庫包含多個文件組,而且但願逐段還原讀/寫輔助文件組(以及可選地還原只讀文件組)。
什麼時候使用大容量日誌恢復模式?
大容量日誌恢復模式做爲完整恢復模式的附加補充。建議僅在運行大規模大容量操做期間以及在不須要數據庫的時間點恢復時使用該模式。
l
數據庫是否會發生週期性的數據庫大容量操做?
在該恢復模式下,多數大容量操做僅進行最小日誌記錄。若是使用完整恢復模式,則能夠在執行此類大容量操做前臨時切換到大容量日誌恢復模式。一般,大容量日誌恢復模式與完整恢復模式類似,只是它按最小方式記錄多數大容量操做。大容量日誌恢復模式僅適合在可以以最小方式記錄操做的大容量操做期間使用。建議在其他時間使用完整恢復模式。當完成一組大容量操做後,建議當即切換回完整恢復模式。
下面就以簡單恢復模式和完整恢復模式來設計幾個備份策略。
一,簡單恢復模式下的備份策略設計:
1,
僅完整數據庫備份策略
這種策略僅適用於常常備份的小型數據庫,數據丟失風險比較大。
此策略僅使用包含數據庫中全部數據的完整數據庫備份。例以下圖完成5個完整數據庫備份後發生災難,只須要還原最近的備份(在 t5 時點執行的備份)。還原此備份會將數據庫恢復到 t5 時點。由 t6 框表示的全部後續更新都將丟失。
在這種策略下爲了最大程度下降數據丟失的風險,能夠增長備份次數和縮短備份間隔,以下圖:
2,完整數據庫備份+差別數據庫備份策略
這種策略比只使用僅完整數據庫備份策略,減小了數據丟失風險。例以下圖在第一個完整數據庫備份完成後,會接着進行三個差別數據庫備份。隨着時間推移,第三個差別備份已經足夠大,於是下一個備份從新使用完整數據庫備份。該數據庫備份將成爲新的差別基準。
在這種備份策略下,若是在t4時進行「差別數據庫備份3」完成後而t5時的「完整數據庫備份2」還沒進行的狀況下發生災難,只須要先還原t1時的「完整數據庫備份1」,接着還原最後一次即t4時的「差別數據庫備份3」就能夠恢復數據庫,可是t4之後的數據會丟失。
二,完整恢復模式下的備份策略設計:
1,
完整數據庫備份+日誌備份策略
例以下圖已完成了完整數據庫備份 Db_1 以及兩個日誌備份 Log_1 和 Log_2。在 Log_2 日誌備份後的某個時間,數據庫出現數據丟失或災難。在還原這三個備份前,必須備份活動日誌(日誌尾部,若是能備份的話)。而後依次還原 Db_1、Log_1 和 Log_2,而不恢復數據庫(還原時必須使用norecovery選項),接着還原並恢復結尾日誌備份 (還原時必須使用recovery選項)。這將把數據庫恢復到故障點,從而恢復全部數據。
2,
完整數據庫備份+差別數據庫備份策略
例如下圖在第一個數據庫備份完成後,會接着進行三個差別數據庫備份。隨着時間推移,第三個差別備份已經足夠大,於是下一個備份從新使用完整數據庫備份。該數據庫備份將成爲新的差別基準。
在這種備份策略下,若是在t10時進行「差別數據庫備份3」完成後而t13時的「完整數據庫備份2」還沒進行的狀況下發生災難,還原時,
必須先備份活動日誌(日誌尾部,若是能備份的話)。
而後依次還原t10時的「完整數據庫備份1」,最後一次即t4時的「差別數據庫備份3」
(還原時必須使用
norecovery
選項)
,
接着還原並恢復結尾日誌備份 (還原時必須使用
recovery
選項)
。這將把數據庫恢復到故障點,從而恢復全部數據。
3,
完整數據庫備份+差別數據庫備份+日誌備份策略
這種備份策略能夠最大程度地下降數據丟失的風險
,也是比較推薦的備份策略!
例以下圖從t1到t12時間段內,進行了
一次完整數據庫備份,若干日誌備份,三個差別數據庫備份。
在這種備份策略下,當t12時的日誌備份完成後數據丟失或發生災難,如何還原數據庫呢?步驟以下:
第一步:備份活動日誌(日誌尾部,若是能備份的話)
第二步:還原t1時的「完整數據庫備份1」
第三步:還原t10時的「差別數據庫備份3」
第四步:還原t11時的日誌備份
第五步:還原t12時的日誌備份
第六步:還原第一步的「尾日誌備份」
其中第二,三,四,五步還原時必須用norecovery選項,第六步用recovery選項。
根據業務系統級別的不一樣,通常能夠一週進行一次完整數據庫備份,一天進行一次差別數據庫備份,30分鐘或1小時進行一第二天志備份。