資料庫備份策略需要考慮的幾大因素

edithfang發表於2014-12-12
介紹

建議您問自己兩個問題。

1. 您管理的資料庫最多能夠容忍多長時間的資料丟失?
2. 您準備投入多少人力物力來做資料庫備份與恢復策略?
      
問題似乎有點殘酷。但是世界上大多數事情,要獲得越好的效果,就需要越多的投入。資料庫備份策略尤其是這樣。本文將介紹資料庫備份需要注意的一些基本事項。

更多資訊

資料丟失因素:
 
不考慮映象技術(比如SQL Server自己的資料庫映象和物理磁碟級映象),資料庫不可能時時刻刻地做資料庫備份,每次備份之間總要有一定的時間間隔。而這個間隔之間的資料變化在下一次備份之前,是沒有保護的。所以講到底,資料丟失的最大時間段,就是兩次備份之間的時間間隔。利用備份恢復機制保護資料,是不可能保證資料一點都不丟失的。如果您的使用者提出的要求是不能有任何資料丟失,則必須跟使用者溝通,讓他們瞭解這樣的要求僅使用資料庫備份技術實現是不現實的,需要做更大的投入,引入映象技術。
      
既然資料丟失的最大時間段,就是兩次備份之間的時間間隔,那麼備份做得越多,資料丟失量就會越少。可是,做備份越頻繁,需要的投入也越多。涉及的因素有:

1. 備份越多,要管理的備份檔案也越多,資料庫恢復時要恢復的檔案也越多。要建立一個合適的備份管理制度。

2. 備份雖然不會阻塞資料庫的正常操作,但是會產生一系列的硬碟讀寫。如果伺服器本身I/O就比較繁忙,備份動作會進一步影響資料庫的效能。須要增強伺服器的硬碟讀寫處理能力,才能避免這種問題發生。

3. 備份難免會因為種種因素失敗。備份越勤,遇到失敗的機率越大。管理員要及時處理錯誤,將備份任務恢復常態。這對管理員的要求也比較高。
      
當您對將要投入的人力物力心中有數以後,就可以來決定採用什麼樣的備份策略了。使用日誌備份,可以將資料庫恢復到故障點或特定的時點。所以日誌備份在備份策略中扮演著很重要的角色。但是日誌備份只能在完整恢復模式和有些大容量日誌恢復模式的資料庫上進行。制定備份策略,首先要決定是否需要做日誌備份。如果需要做日誌備份,資料庫恢復模式就要選成完整模式。(大容量恢復模式不能總保證日誌備份成功,所以一般不推薦在生產環境下使用)如果不做日誌備份,資料庫模式就要設定簡單,否則會遇到日誌檔案無限增長問題。
 
簡單恢復模式下的備份:

簡單恢復模式下,不能做日誌備份。所以它只支援最簡單的備份和還原方式,很容易管理。不過如果沒有日誌備份,就只能將資料庫恢復到最後一次備份的結尾。如果發生災難,資料庫最後一次備份之後做的資料修改將全部丟失。在簡單恢復模式下,工作損失風險會隨時間增長而增加,直到進行下一個完整備份或差異備份為止。因此,建議您排訂充足的備份的頻率,以避免遺失大量資料。同時,頻率也不能太高而讓備份變得難以管理。
      
為了降低風險,可以引入差異備份。使用差異資料庫備份補充資料庫完整備份,是減輕工作損失風險的一種備份策略。在第一次資料庫備份之後,連續建立了3次差異備份。第3個差異備份後,進行資料庫完整備份,建立新的差異基準。因為差異備份的開銷一般都比完整備份低,所以能夠比較經常地執行。這樣的備份策略可以使用在資料量稍大,能夠容忍較長時間資料丟失的資料庫上。
      
以上兩種備份策略的優勢,是不管是備份還是恢復,管理起來都比較簡單。但是不管是資料庫完整備份,還是差異備份,都不可能以比較頻繁的頻率進行,一般都只能在晚間進行。如果資料庫比較龐大,或者不允許比較長時間的資料丟失,這樣的備份策略是不能滿足要求的。必須引入日誌備份,建立更為複雜,但是也更強大的備份恢復策略。
 
完整恢復模式下的備份
 
選取完整恢復模式,就可以使用日誌備份。由於日誌備份只拷貝上次日誌備份以來的所有日誌記錄,所以開銷會比資料庫備份小很多。可以定義以一種很頻繁的頻率(5分鐘甚至更短)來做備份,以達到在最大限度內,防止出現故障時丟失資料的目的。使用日誌備份的優點是允許您將資料庫還原到日誌備份內包含的任何時點(“時點恢復”)。假定可以在發生嚴重故障後備份活動日誌,則可將資料庫一直還原到沒有發生資料丟失的故障點處。使用日誌備份的缺點是它們的數量很多,而且恢復備份時,需要嚴格按照備份產生的順序依次恢復。中間不能有任何備份缺失或跳躍。所以日誌備份做得越多,還原時間就越長,管理複雜性也越高。
      
在第一個完整資料庫備份完成,並且常規日誌備份開始之後,潛在的工作丟失風險存在時間,僅為資料庫損壞時點,到上一次常規日誌備份的那一段時間。因此,建議經常執行日誌備份,以將工作丟失的風險限定在業務要求所允許的範圍內。出現故障後,可以嘗試備份“日誌尾部”(尚未備份的日誌)。如果尾日誌備份成功,則可以通過將資料庫還原到故障點來避免任何工作丟失。所以這種備份計劃的優點也是很明顯的。
      
但是上述備份計劃的一大缺陷,就是災難發生後需要恢復的日誌檔案數目太多。假設每個小時做一次日誌備份,每週日做一次資料庫備份,如果災難在週五發生,就不得不恢復上百個日誌備份。這個工作量和所要花的時間是很大的。為了最大程度地縮短還原時間,可以對資料庫進行一系列差異備份做補充。
 
檔案或檔案組備份

完整檔案備份指備份一個或多個檔案或檔案組中的所有資料。在完整恢復模式下,一整套完整檔案備份和跨所有檔案備份的日誌備份合起來,等同於一個完整資料庫備份。使用檔案備份能夠只還原損壞的檔案,而不用還原資料庫的其餘部分,從而可加快恢復速度。例如,如果資料庫由位於不同磁碟上的若干個檔案組成,在其中一個磁碟發生故障時,只須還原故障磁碟上的檔案。
      
檔案備份在預設情況下包含足夠的日誌記錄,可以將檔案前滾至備份操作的末尾。(但是在簡單恢復模式下,必須一起備份所有讀/寫檔案,而不是逐個指定每個讀/寫檔案或檔案組)相對於資料庫備份,檔案備份具有如下優點:

  • l 能夠更快地從隔離的媒體故障中恢復。可以迅速還原損壞的檔案。
  • l 與完整資料庫備份(對於超大型資料庫而言,變得難以管理)相比,檔案備份增加了計劃和媒體處理的靈活性。檔案或檔案組備份的更高靈活性對於包含具有不同更新特徵的資料的大型資料庫也很有用。
      
與完整資料庫備份相比,檔案備份的主要缺點是管理較複雜。如果某個損壞的檔案未備份,那麼媒體故障可能會導致無法恢復整個資料庫。因此,必須維護一組完整的檔案備份,對於完整/大容量日誌恢復模式,還必須維護一個或多個日誌備份,這些日誌備份至少涵蓋第一個完整檔案備份和最後一個完整備份之間的時間間隔。維護和跟蹤這些完整備份是一種耗時的任務,所需空間可能會超過完整資料庫備份的所需空間。所以這種備份策略在實際使用中應用得還是比較少的。它只有在管理超大資料庫時,才能發揮出其不可替代的優勢。
      
在完整恢復模式下,一整套完整檔案備份與涵蓋從第一個檔案備份開始的所有檔案備份的足夠日誌備份合起來等同於完整資料庫備份。僅使用檔案備份和日誌備份還原資料庫的操作可能比較複雜。因此,如果可能,最好執行完整資料庫備份並在第一個檔案備份開始之前開始日誌備份。建立了第一個資料庫備份之後,便可開始執行事務日誌備份。事務日誌備份計劃按設定的間隔執行。檔案備份以最適合資料庫業務要求的間隔執行。
      
在完整恢復模式下,恢復一個檔案組備份,不但需要恢復檔案組備份本身,還需要依次恢復從上一次完整資料庫備份後,到恢復的目標時間點為止的所有日誌備份,以確保該檔案與資料庫的其餘部分保持一致。所以要恢復的事務日誌備份數量會很多。要避免這種情況,可以考慮使用差異檔案備份。可是這樣會使整個備份計劃更加難於管理。這也是為什麼檔案備份不常使用的重要原因。但是在管理超大資料庫時,這可能是唯一的選擇。


參考

Introduction to Backup and Restore Strategies in SQL Server

Backup Overview (SQL Server) - MSDN

應用於

資料庫備份
相關閱讀
評論(1)

相關文章