数据库故障恢复技术
故障的種類
事務故障
邏輯故障,例如:除以0;
余額不允許為負。
系統崩潰故障
停電、硬件故障,藍屏死機故障。
磁盤故障
分為數據庫磁盤故障和日志磁盤故障。
災難故障
例如:地震,火災等不可抗因素。
故障的恢復方法
1、事務故障的恢復:撤消事務(UNDO)
具體方法:
(1). 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務的更新操作。
(2). 對該事務的更新操作執行逆操作。即將日志記錄中“更新前的值” 寫入數據庫。
插入操作, “更新前的值”為空,則相當于做刪除操作
刪除操作,“更新后的值”為空,則相當于做插入操作
若是修改操作,則相當于用修改前值代替修改后值
(3). 繼續反向掃描日志文件,查找該事務的其他更新操作,并做同樣處理。
(4). 如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。
2、系統崩潰故障的恢復:撤消事務(UNDO)+重做事務(REDO)
發生系統故障時,事務未提交
恢復策略:強行撤消(UNDO)所有未完成事務
發生系統故障時,事務已提交,但緩沖區中的信息尚未完全寫回到磁盤上。
恢復策略:重做(REDO)所有已提交的事務
具體方法:
重啟數據庫管理系統;從日志磁盤讀取日志文件;反向掃描日志,也就是從日志文件的結束位置開始后向掃描。當發現一個事務在日志記錄中沒有 記錄時,執行undo( Ti) 操作,使用舊值恢復數據項: 然后從日志文件的開始位置順向掃描。對日志記錄中含有的事務,執行redo( Ti) 操作,使用新值恢復數據項;
3、磁盤(介質)故障的恢復
數據庫磁盤故障,把dump的備份數據庫文件拷貝到新的數據庫磁盤上;從日志文件的末尾逆向掃描直至記錄,再順向掃描日志記錄,對有日志記錄的事務做redo(Ti)操作。
日志磁盤故障:不再接收事務請求,讓當前的所有活動事務執行完畢;輸出數據庫緩沖區中的緩沖數據到數據庫磁盤中(即checkpoint);執行Dump操作,把磁盤中的數據庫文件拷貝到另一個磁盤上;更換日志磁盤。
4、災難故障的恢復:遠程備份
總結
- 上一篇: 数据库事务和并发控制
- 下一篇: 分布式系统之异常