在數(shù)據(jù)庫系統(tǒng)中,恢復是指在發(fā)生某種故障導致數(shù)據(jù)庫數(shù)據(jù)不再正確時,將數(shù)據(jù)庫恢復到已知正確的某一狀態(tài)的過程。數(shù)據(jù)庫故障可能由多種原因引起,包括硬件故障、軟件錯誤、操作員失誤以及惡意破壞。為了確保數(shù)據(jù)庫的安全性和完整性,數(shù)據(jù)庫管理系統(tǒng)(DBMS)必須具有有效的恢復機制。
一.故障的種類
在數(shù)據(jù)庫系統(tǒng)中,可能發(fā)生的故障主要包括事務故障、系統(tǒng)故障、介質(zhì)故障和計算機病毒。每種故障類型都可能對數(shù)據(jù)庫的正常運行產(chǎn)生影響,因此需要相應的恢復機制來應對這些故障。
1. 事務故障
事務故障指事務未達到預期終點,使得數(shù)據(jù)庫可能處于不正確狀態(tài)。這包括事務內(nèi)部的非預期故障,如運算溢出、并發(fā)事務死鎖等。恢復程序通過事務撤銷,即回滾事務已做出的對數(shù)據(jù)庫的修改,將事務恢復到未啟動的狀態(tài),以保證數(shù)據(jù)一致性。
2. 系統(tǒng)故障
系統(tǒng)故障是指導致系統(tǒng)停止運轉的各種事故,例如硬件錯誤、操作系統(tǒng)故障、DBMS代碼錯誤、突然停電等。這類故障影響正在運行的所有事務,可能導致數(shù)據(jù)庫非正常終止。在系統(tǒng)重新啟動時,恢復子系統(tǒng)需要回滾未完成的事務,并重做已提交的事務,以將數(shù)據(jù)庫恢復到一致狀態(tài)。
3. 介質(zhì)故障
介質(zhì)故障,也稱為硬故障,指外存故障,如磁盤損壞、磁頭碰撞等。這類故障可能破壞整個數(shù)據(jù)庫或部分數(shù)據(jù)庫,影響存取這部分數(shù)據(jù)庫的所有事務。在發(fā)生介質(zhì)故障后,需要將后援副本裝入數(shù)據(jù)庫,并重新執(zhí)行已成功完成的事務,將已提交的結果重新寫入數(shù)據(jù)庫。
4. 計算機病毒
計算機病毒是一種人為的故障或破壞,它可以繁殖和傳播,對計算機系統(tǒng),包括數(shù)據(jù)庫,造成破壞。計算機病毒可能導致數(shù)據(jù)的損壞和系統(tǒng)的不穩(wěn)定,需要采取相應的安全防護措施來避免病毒的侵害。
二.故障恢復
數(shù)據(jù)庫系統(tǒng)的恢復機制涉及建立備份數(shù)據(jù)和如何利用備份數(shù)據(jù)來修復數(shù)據(jù)庫。備份數(shù)據(jù)的建立通常采用數(shù)據(jù)轉儲和日志文件技術。
1. 數(shù)據(jù)轉儲
數(shù)據(jù)轉儲是將數(shù)據(jù)庫定期復制到轉儲設備(如磁帶或磁盤)的過程。轉儲設備中的備用數(shù)據(jù)庫文件稱為后備副本。靜態(tài)轉儲和動態(tài)轉儲是兩種常見的方式。
-
靜態(tài)轉儲和動態(tài)轉儲:
- 靜態(tài)轉儲: 在系統(tǒng)中無運行事務時進行的轉儲操作,轉儲時數(shù)據(jù)庫處于一致性狀態(tài)。靜態(tài)轉儲簡單但會降低數(shù)據(jù)庫的可用性。
- 動態(tài)轉儲: 允許在轉儲期間對數(shù)據(jù)庫進行訪問或修改,可以并發(fā)執(zhí)行。需要記錄轉儲期間各事務對數(shù)據(jù)庫的修改活動,建立日志文件。動態(tài)轉儲克服了靜態(tài)轉儲的缺點。
-
海量轉儲和增量轉儲:
- 海量轉儲: 每次轉儲全部數(shù)據(jù)庫,便于恢復。
-
增量轉儲: 每次只轉儲上一次轉儲后更新過的數(shù)據(jù),適用于大型且頻繁更新的數(shù)據(jù)庫。
2. 日志文件
日志文件用于記錄每一次對數(shù)據(jù)庫的更新活動,分為數(shù)據(jù)塊為單位和記錄為單位的兩種格式。登記日志文件的目的是為了數(shù)據(jù)庫的恢復,包括事務故障恢復、系統(tǒng)故障恢復和介質(zhì)故障恢復。
-
作用:
- 用于事務故障和系統(tǒng)故障恢復,協(xié)助后備副本進行介質(zhì)故障恢復。
- 在動態(tài)轉儲方式中,必須與后備副本一起使用。
- 在靜態(tài)轉儲方式中,可用于重新裝入后備副本和對已完成事務的重做處理。
3. 恢復事務
發(fā)生故障時,首先根據(jù)前次轉儲的后備副本恢復數(shù)據(jù)庫,然后利用日志文件進行事務的恢復。
-
恢復步驟:
- 從頭掃描日志文件,找出已經(jīng)結束和尚未結束的事務。
- 對尚未結束的事務進行撤銷(UNDO)處理和已經(jīng)結束的事務進行重做(REDO)處理。
-
撤銷和重做處理:
- 撤銷處理: 反向掃描日志文件,對每個事務的更新操作執(zhí)行反操作,恢復修改過的數(shù)據(jù)。
- 重做處理: 正向掃描日志文件,重新執(zhí)行登記的事務的操作,確保數(shù)據(jù)庫恢復到正確狀態(tài)。
三.恢復策略
恢復策略針對事務故障、系統(tǒng)故障和介質(zhì)故障分別制定,以確保數(shù)據(jù)庫的一致性和可靠性。
1. 事務故障恢復
事務故障是指事務在運行至正常終止點前被終止,恢復子系統(tǒng)通過利用日志文件撤銷已對數(shù)據(jù)庫進行的修改來進行事務故障恢復。
-
步驟:
- 反向掃描日志文件,查找該事務的更新操作。
- 對該事務的更新操作執(zhí)行逆操作,包括插入、刪除和修改。
- 繼續(xù)反向掃描日志文件,直到讀到該事務的開始標記。
事務故障的恢復由系統(tǒng)自動完成,對用戶透明,無需用戶干預。
2. 系統(tǒng)故障恢復
系統(tǒng)故障分為兩種情況:未完成事務對數(shù)據(jù)庫的更新可能已寫入數(shù)據(jù)庫,已提交事務對數(shù)據(jù)庫的更新可能還留在緩沖區(qū)沒有寫入數(shù)據(jù)庫。因此,系統(tǒng)故障的恢復操作包括撤銷故障發(fā)生時未完成的事務和重做已完成的事務。
-
步驟:
- 正向掃描日志文件,找出已提交和尚未完成的事務,將其分別記錄在重做隊列和撤銷隊列中。
- 對撤銷隊列中的事務進行撤銷操作,即反向掃描日志文件執(zhí)行逆操作。
- 對重做隊列中的事務進行重做操作,即正向掃描日志文件重新執(zhí)行事務的操作。
系統(tǒng)故障的恢復由系統(tǒng)自動完成,無需用戶干預。
3. 介質(zhì)故障恢復
介質(zhì)故障包括磁盤上的物理數(shù)據(jù)和日志文件的破壞,恢復操作涉及重裝數(shù)據(jù)庫并重做已完成的事務。
-
步驟:
- 裝入最新的數(shù)據(jù)庫副本,將數(shù)據(jù)恢復到最近一次轉儲時的一致性狀態(tài)。
- 若為動態(tài)轉儲,同時裝入轉儲開始時刻的日志文件副本,利用系統(tǒng)故障恢復方法(REDO+UNDO)將數(shù)據(jù)庫恢復到一致性狀態(tài)。
- 若為靜態(tài)轉儲,數(shù)據(jù)庫即處于一致性狀態(tài)。
- 裝入相應的日志文件副本,重做已完成的事務。
介質(zhì)故障的恢復需要DBA介入,但只需重裝最近轉儲的數(shù)據(jù)庫副本和相關的日志文件副本,然后執(zhí)行系統(tǒng)提供的恢復命令。文章來源:http://www.zghlxwxcb.cn/news/detail-795096.html
綜合這些恢復策略,數(shù)據(jù)庫系統(tǒng)能夠有效地處理各類故障,確保數(shù)據(jù)的完整性和系統(tǒng)的可靠性。文章來源地址http://www.zghlxwxcb.cn/news/detail-795096.html
到了這里,關于【數(shù)據(jù)庫原理】(27)數(shù)據(jù)庫恢復的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!