資料庫的故障及其恢復策略

2021-07-11 16:22:50 字數 2513 閱讀 4502

資料庫執行過程中,可能會出現各種各樣的故障,這些故障可分為以下三類:事務故障、系統故障和介質故障。應該根據故障型別的不同,採取不同的恢復策略。

1,事務故障及其恢復:

事務故障表示由非預期的、不正常的程式結束所造成的故障。

造成程式非正常結束的原因包括輸人資料錯誤、運算溢位、違反儲存保護、並行事務發生死鎖等。

發生事務故障時,被迫中斷的事務可能已對資料庫進行丁修改,為了消除該事務對資料庫的影響,要利用日誌檔案中所記載的資訊,強行回滾(rollback)該事務,將資料庫恢復到修改前的初始狀態。

為此,要檢查日誌檔案中由這些事務所引起的發生變化的記錄,取消這些沒有完成的事務所做的一切改變。

這類恢復操作稱為事務撤銷(undo),具體做法如下。

(1)反向掃瞄日誌檔案,查詢該事務的更新操作。

(2)對該事務的更新操作執行反操作,即對已經插入的新記錄進行刪除操作,對己刪除的記錄進行插入操作,對修改的資料恢復舊值,用舊值代替新值。這樣由後向前逐個掃瞄該事務已做的所有更新操作,並做同樣處理,直到掃瞄到此事務的開始標記,事務故障恢復完畢為止。

因此,乙個事務是乙個工作單位,也是乙個恢復單位。乙個事務越短,越便於對它進行undo操作。如果乙個應用程式執行時間較長,則應該把該應用程式分成多個事務,用明確的commit語句來結束各個事務。

2

,系統故障及其恢復:

系統故障是指系統在執行過程中,由於某種原因,造成系統停止運轉,致使所有正在執行的事務都以非正常方式終止,要求系統重新啟動。引起系統故障的原因可能有硬體錯誤(如

cpu故障、作業系統)或

dbms

**錯誤、突然斷電等。

這時,記憶體中資料庫緩衝區的內容全部丟失,雖然儲存在外部儲存裝置上的資料庫並未破壞,但其內容不可靠了。系統故障發生後,對資料庫的影響有以下兩種情況。

一種情況是一些未完成事務對資料庫的更新已寫入資料庫,這樣在系統重新啟動後,要強行撤銷(undo)所有未完成的事務,清除這些事務對資料庫所做的修改。這些末完成事務在日誌檔案中只有begin translatl0n標記,而無commit標記。

另一種情況是有些已提交的事務對資料庫的更新結果還保留在緩衝區中,尚未寫到磁碟上的物理資料庫中,這也使資料庫處於不一致狀態,因此應將這些事務已提交的結果重新寫入資料庫。這類恢復操作稱為事務的重做(redo)。這種巳提交事務在日誌檔案中既有bgin transcation標記,也有commit標記。

因此,系統故障的恢復要完成兩方面的工作,既要撤銷所有末完成的事務,還要重做所有已提交的事務,這樣才能將資料庫真正恢復到一致的狀態。具體做法如下。

(1)正向掃瞄日誌檔案,查詢尚未提交的事務,將其事務標識記人撤銷佇列。同時查詢已經提交的事務,將其事務標識記入重做佇列。

(2)對撤銷佇列中的各個事務進行撤銷處理。方法同事務故障中所介紹的撤銷方法。

(3)對重做佇列中的各個事務進行重做處理。進行重做處理的方法是正向掃瞄日誌檔案,按照日誌檔案中所登記的操作內容,重新執行操作,使資料庫恢復到最近某個可用狀態。

系統發生故障後,由於無法確定哪些末完成的事務已更新過資料庫,哪些事務的提交結果尚未寫入資料庫,因此系統重新啟動後,就要撤銷所有的末完成的事務,重做所有的已經提交的事務。

但是,在故障發生前已經執行完畢的事務有些是正常結束的,有些是異常結束的。所以無須把它們全部撤銷或重做。

通常採用設立檢查點(checkpoint)的方法來判斷事務是否正常結束。每隔一段時間,比如說5分鐘,系統就產生乙個檢查點,做下面一些事情:a,把仍保留在日誌緩衝區中的內容寫到日誌檔案中;b,在日誌檔案中寫乙個「檢查點記錄」;c,把資料庫緩衝區中的內容寫到資料庫中,即把更新的內容寫到物理資料庫中;d,把日誌檔案中檢查點記錄的位址寫到「重新啟動檔案」中。

每個檢查點記錄包含的資訊有在檢查點時間的所有活動事務一覽表、每個事務最近日誌記錄的位址。

在重新啟動時,恢復管理程式先從「重新啟動檔案」中獲得檢查點記錄的位址,從日誌檔案中找到該檢查點記錄的內容,通過日誌往回找,就能決定哪些事務需要撤銷,恢復到初始的狀態,哪些事務需要重做。為此利用檢查點資訊能做到及時、有效、正確地完成恢復工作。

3,介質故障及其恢復

介質故障是指系統在執行過程中,由於輔助儲存器介質受到破壞,使儲存在外存中的資料部分或全部丟失。

這類故障比事務故障和系統故障發生的可能性要小,但這是最嚴重的一種故障,破壞性很大,磁碟上的物理資料和日誌檔案可能被破壞,這需要裝入發生介質故障前最新的後備資料庫副本,然後利用日誌檔案重做該副本後所執行的所有事務。

具體方法如下。

(1)裝入最新的資料庫副本,使資料庫恢復到最近一次轉儲時的可用狀態。

(2)裝入最新的日誌檔案副本,根據日誌檔案中的內容重做已完成的事務。首先掃瞄日誌檔案,找出故障發生時己提交的事務,將其記入重做佇列。然後正向掃瞄日誌檔案,對重做佇列中的各個事務進行重做處理,方法是正向掃瞄日誌檔案,對每個重做事務重新執行登記的操作,即將日誌記錄中「更新後的值」寫入資料庫。

這樣就可以將資料庫恢復至故障前某一時刻的一致狀態了。

資料庫故障恢復技術

前言 資料庫故障恢復就是把資料庫從錯誤狀態恢復到某一已知的正確狀態 亦稱為一致狀態或完整狀態 一 故障的種類 1 事務故障 邏輯故障,例如 除以0 餘額不允許為負。2 系統崩潰故障 停電 硬體故障,藍屏宕機故障。3 磁碟故障 分為資料庫磁碟故障和日誌磁碟故障。4 災難故障 例如 火災等不可抗因素。二...

資料庫原理 恢復策略

三種不同的資料庫故障,其恢復資料庫的策略也是不同的 1 事務故障的恢復 事務故障 事務執行至正常終點前被終止 恢復方法 利用日誌檔案撤銷此事務對資料庫進行的修改 恢復步驟 特點 事務故障的恢復由系統自動完成,不需要使用者進行干預 2 系統故障的恢復 系統故障造成資料庫不一致性的原因 恢復的方法 恢復...

資料庫備份恢復策略

主要策略 一周一次全量備份,並刪除上週的增量備份,全量備份 每天一次增量備份。全量備份 mysqldump uroot padmin123 quick events flush logs delete master logs single transaction databases fecmall ...