資料庫故障恢復

“數據故障恢復”和“完整性約束”、“並發控制”一樣,都是資料庫數據保護機制中的一種完整性控制。

簡介

數據故障恢復就是把資料庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為一致狀態或完整狀態)。

“數據故障恢復”和“完整性約束”、“並發控制”一樣,都是資料庫數據保護機制中的一種完整性控制。所有的系統都免不了會發生故障,有可能是硬體失靈,有可能是軟體系統崩潰,也有可能是其他外界的原因,比如斷電等等。運行的突然中斷會使資料庫處在一個錯誤的狀態,而且故障排除後沒有辦法讓系統精確地從斷點繼續執行下去。這就要求DBMS要有一套故障後的數據恢復機構,保證資料庫能夠回復到一致的、正確地狀態去。而“數據故障恢復”正是這樣一個機構。

套用

所有的數據恢復的方法都基於數據備份。對於一些相對簡單的資料庫來說,每隔一段時間做個資料庫備份就足夠了,但是對於一個繁忙的大型資料庫套用系統而言,只有備份是遠遠不夠的,還需要其他方法的配合。恢復機制的核心是保持一個運行日誌,記錄每個事務的關鍵操作信息,比如更新操作的數據改前值和改後值。事務順利執行完畢,稱之為提交。發生故障時數據未執行完,恢復時就要滾回事務。滾回就是把做過的更新取消。取消更新的方法就是從日誌拿出數據的改前值,寫回到資料庫里去。提交表示資料庫成功進入新的完整狀態,滾回意味著把資料庫恢復到故障發生前的完整狀態。

現在舉一個銀行轉帳的例子。從轉出賬戶扣了錢,沒來得及寫入轉入賬戶就發生故障了。資料庫顯然處在數據不一致的狀態。恢復時就要從日誌上把轉出帳戶餘額的改前值找出來,寫回到資料庫裡面去,轉賬事務就滾回了。賬沒轉成不要緊,待會兒再轉一次,但重要的是資料庫能夠恢復到故障前的正確狀態。這樣,數據的完整性才得以保持。

在寫日誌的一刻發生故障,日誌的記錄並不完整,就不能依靠日誌來保持資料庫的完整。但是,DBMS有一個控制準則叫做“寫日誌優先準則”。當資料庫執行更新操作時,先把更新信息寫進日誌裡面,然後再更新資料庫。所以當寫日誌系統發生故障時,資料庫並沒有進行更新,這些數據也就並不需要參與恢復過程。

相關詞條

熱門詞條

聯絡我們