碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
數據庫 的 恢復策略
本文轉載自
查看原文
2017-05-20 10:47
1886
數據庫
事務故障的恢復
事務故障
是指事務在運行至正常終止點前被終止,這時恢復子系統應利用日志文件撤銷(UNDO)此事務已對數據庫進行的修改。
系統恢復的步驟:
(1)反向掃描日志文件(即從最后向前掃描日志文件),查找該事物的更新操作。
(2)對該事務的更新操作執行逆操作。即將日志記錄中"更新前的值"寫入數據庫。這樣如果記錄中是插入操作,則相當於做刪除操作;若記錄中是刪除操作,則做插入操作;若是修改,則相當於修改前值代替修改后值。
(3)繼續反向掃描日志文件,查找該事務的其他更新操作,並作同樣處理。
(4)如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。
系統故障
系統故障的恢復是由系統在重新啟動時候自動完成的,不需要用戶干預。
系統的恢復步驟是:
(1)正向掃描日志文件(即從頭掃描日志文件),找出在故障發生前已經提交的事務(這些事務既有BEGIN TRANSACTION記錄,也有COMMIT記錄),將其事務標識記入重做(REDO)隊列。同時找出故障發生時尚未完成的事務(這些事務只有BEGIN TRANSACTION記錄,無相應的COMMIT記錄),將其事務標識記入撤銷隊列。
(2)對撤銷隊列中的各個事務進行撤銷(UNDO)處理。
進行UNDO處理的方法是,反向掃描日志文件,對每一個UNDO事務的更新操作執行逆操作,將將日志記錄中"更新前的值"寫入數據庫(該方法和事務故障的解決方法一致)。
(3)對重做隊列中的各個事務進行重做(REDO)處理。
進行REDO處理的方法是:正向掃描日志文件,對每一個REDO事務從新執行日志文件登記的操作。即將日志記錄中"更新后的值"寫入數據庫。
具有檢查點的恢復技術
利用日志技術進行數據庫恢復時,恢復子系統必須搜索日志,確定哪些事務需要REDO,哪些事務需要UNDO。一般來說,需要檢查所有的記錄。這樣做有兩個問題。
一是搜索整個日志將消耗大量的時間。二是很多需要REDO處理的事務實際上已經將它們的更新操作結果寫到數據庫中了,然而恢復子系統又重新執行了這些操作,浪費了大量時間。
檢查點的理解
###
首先查看有幾個檢查點,找到里故障最近的一次檢查點,之后看看哪些事務執行的時間是在檢查點之前完成的
(1)如果事務在檢查點之前完成的則不需要REDO(如:T1)
(2)如果事務在檢查點之前執行,在檢查點之后故障之前提交則需要REDO(如:T2,T4)
(3)如果事務在故障后,則需要執行UNDO(如:T3,T5)
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
180727-時序數據庫InfluxDB之備份和恢復策略
如何恢復數據庫
數據庫恢復技術
如何恢復Mysql數據庫
數據庫備份策略
數據庫恢復技術
mysql數據庫恢復
數據庫的備份和恢復
mysql數據庫恢復
勒索病毒數據庫恢復 病毒數據庫恢復 數據庫被加密恢復
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM