數據庫的恢復算法
目錄:數據庫
1.定義spa
2.存儲器結構日誌
3.恢復的基本原則和實現方法隊列
4.故障類型和恢復方法事件
5.檢查點技術事務
1.定義內存
系統能把數據庫從被破壞、不正確的狀態恢復到最近一個正確的狀態,DBMS的這種能力稱爲數據庫的可恢復性(Recovery)。input
2.存儲器結構it
1.存儲器的類型
①易失性存儲器:指內存。cashe存儲器。系統發生故障時,存儲的信息當即丟失,可是訪問速度很是快。
②非易失性存儲器:指磁盤和磁帶。系統發生故障時,存儲的信息不會丟失。如發生存儲器自己的故障,會致使信息的丟失。它的訪問速度要比易失性存儲器慢幾個數量級。
③穩定存儲器:理論上的概念。存儲器在穩定存儲器中的信息是毫不會丟失的。這能夠經過對非意識形態存儲器進行技術處理,達到穩定存儲器的目標。
2.穩定存儲器如何實現?
能夠經過數據備份和數據銀行方法,實現穩定存儲器的目標。
3.數據訪問
數據在磁盤上以稱爲「塊」的定長存儲單位形式組織。塊是內、外存數據交換的基本單位。磁盤中的塊稱爲「物理塊」,內存中臨時存放物理塊內容的塊稱爲「緩衝塊」,全部緩衝塊組成了「粗盤緩衝區」。
輸入(input)操做:數據從物理塊到緩衝塊。
輸出(output)操做:數據從緩衝塊到物理塊。
還有read和write操做,須要注意這兩個操做通常只須要數據塊從磁盤到內存的傳遞。
那何時纔會實現從內存到磁盤的傳送呢?
①緩衝區管理系統須要內存空間,及內存空間不足。
②DBS但願改變磁盤中的值。
以上兩種狀況下,纔會執行output操做。
4.恢復與原子性的聯繫
系統發生故障,內存內容丟失時,爲了達到事務的原子性這個目標,必須首先把描述修改的信息輸出到穩定存儲器中,但此時不修改磁盤中的數據。這個過程知道事務的COMMIT操做爲止。「日誌」技術可實現這個過程。
3.恢復的基本原則和實現方法
數據庫的恢復,意味着要把數據庫恢復到最近一次故障前的一致性狀態。
要使數據庫具備可恢復性,基本原則很簡單,就是「冗餘」,即數據庫重複存儲。
數據庫恢復的具體實現方法以下:
1.平時作好兩件事:轉儲和創建日誌
2.一旦發生數據庫故障,分兩種狀況處理:
①若是數據庫遇到災難性故障,例如,磁盤脫落,磁盤損壞等,這時數據庫已不能用了,就必須裝入最近一次的數據庫備份到新的硬盤,而後利用日誌庫「重作」(REDO)已提交的事務,把數據庫恢復到故障前的狀態。
②若是數據庫未遭到物理性破壞,但破壞了數據庫的一致性(某些數據不正確),此時沒必要去複製存檔的數據庫,只要利用日誌庫「撤銷」(UNDO)全部不可靠的修改,再利用日誌庫的「重作」(REDO)已提交的、但對數據庫的更新可能還留在內存緩衝區的事務,就能夠把數據庫恢復到正確的狀態。
4.故障類型和恢復方法
在DBS引入事務的概念之後,數據庫的故障具體體現爲事務執行的成功與失敗,常見故障可分爲三類:
1.事務故障
①能夠預期的事務故障:如存款餘額透支,執行UNDO。
②非預期的事務故障:如內存溢出,執行UNDO。
2.系統故障
引發系統中止運轉隨之要求從新啓動的事件稱爲系統故障。例如,硬件故障,軟件錯誤,掉電等。
形成主存丟失,但不破壞數據庫。
從新啓動後,具體處理分兩種狀況考慮:
①對未完成事務做UNDO處理。
②對已提交事務但更新還留在緩衝區的事務進行REDO處理。
3.介質故障
在發生介質故障和遭受病毒破壞時,磁盤上的物理數據庫遭到毀滅性破壞。恢復過程以下:
①重裝最近轉儲的後備副本到新的硬盤。
②在日誌中找出最近轉儲之後全部已提交的事務。
③對這些已提交的事務進行REDO處理。
事務故障和系統故障的恢復由系統自動進行,而介質故障的恢復須要DBA(Administrator)配合執行。在實際中,系統故障一般稱爲軟故障,介質故障一般稱爲硬故障。
5.檢查點技術
1.檢查點方法
在DBS運行時,DBMS定時設置檢查點。在檢查點時刻才真正作到把對DB的修改寫到磁盤,並在日誌文件寫入一條檢查點記錄(以便恢復時使用)。當DB須要恢復時,只有那些在檢查點後面的事務須要恢復。
①事務T1沒必要恢復。
②事務T2和T4必須作(REDO),由於他們commit的信息存在內存緩衝區中,還未寫到磁盤。
③事務T3和T5必須撤銷(UNDO),由於它們還未作完,必須撤銷事務已對DB作的修改。
2.檢查點方法的恢復算法
採用檢查點方法的基本恢復方法分紅兩步。
1.根據日誌文件創建事務重作隊列和事務撤銷隊列。
2.對重作隊列中的事務進行REDO處理,對撤銷隊列中的事務進行UNDOchu8loi。