1. 程式人生 > >資料庫故障恢復技術

資料庫故障恢復技術

前言

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

一、故障的種類

1、事務故障
- 邏輯故障,例如:除以0;
- 餘額不允許為負。

2、系統崩潰故障
- 停電、硬體故障,藍屏宕機故障。

3、磁碟故障
- 分為資料庫磁碟故障和日誌磁碟故障。

4、災難故障
- 例如:地震,火災等不可抗因素。

二、故障恢復方法
主要講述常用的日誌方法,分頁方法因為很少使用,有興趣可以自行查閱資料。

1、事務故障的恢復:撤消事務(UNDO)

具體方法:

(1). 反向掃描檔案日誌(即從最後向前掃描日誌檔案),查詢該事務的更新操作。
(2). 對該事務的更新操作執行逆操作。即將日誌記錄中“更新前的值” 寫入資料庫。
插入操作, “更新前的值”為空,則相當於做刪除操作
刪除操作,“更新後的值”為空,則相當於做插入操作
若是修改操作,則相當於用修改前值代替修改後值
(3). 繼續反向掃描日誌檔案,查詢該事務的其他更新操作,並做同樣處理。
(4). 如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。

2、系統崩潰故障的恢復

發生系統故障時,事務未提交
恢復策略:強行撤消(UNDO)所有未完成事務
發生系統故障時,事務已提交,但緩衝區中的資訊尚未完全寫回到磁碟上。
恢復策略:重做(REDO)所有已提交的事務

具體方法:

重啟資料庫管理系統;從日誌磁碟讀取日誌檔案;反向掃描日誌,也就是從日誌檔案的結束位置開始後向掃描。當發現一個事務在日誌記錄中沒有 記錄時,執行undo( Ti) 操作,使用舊值恢復資料項: 然後從日誌檔案的開始位置順向掃描。對日誌記錄中含有的事務,執行redo( Ti) 操作,使用新值恢復資料項;

新的問題來了,執行日誌保留了若干天的記錄,掃描整個日誌檔案很費時,如何解決?

檢查點

解決方法

週期性的做檢查點(checkpointing)

檢查點

3、磁碟(介質)故障的恢復

資料庫磁碟故障,把dump的備份資料庫檔案拷貝到新的資料庫磁碟上;從日誌檔案的末尾逆向掃描直至記錄,再順向掃描日誌記錄,對有日誌記錄的事務做redo(Ti)操作。

日誌磁碟故障:不再接收事務請求,讓當前的所有活動事務執行完畢;輸出資料庫緩衝區中的緩衝資料到資料庫磁碟中(即checkpoint);執行Dump操作,把磁碟中的資料庫檔案拷貝到另一個磁碟上;更換日誌磁碟。

日誌磁碟恢復

4、災難故障的恢復:遠端備份

三、小結

事務故障的恢復

UNDO

系統故障的恢復

UNDO + REDO

介質故障的恢復

重灌備份並恢復到一致性狀態 + REDO

災難故障的恢復

遠端備份

以上為個人的學習總結,有不妥之處,請在評論中指出。