数据库故障学习
数据库管理系统的运行方式
-
DBMS利用内存和外存这样的存储体系来进行数据库管理。
-
在内存中,又将其分为程序数据(事务数据)和系统数据。
-
事务是DBMS对数据库进行控制的基本逻辑单元。
-
故障恢复涉及到如何保证原子性和持久性。
数据库故障类型
事务故障
某一个事务自身运行错误所引起的故障,影响该事务本身。
系统故障
由于断电,非正常关机等引起的故障,影响正在运行的事务以及数据库缓冲区将涉及正在运行和已经运行的事务。
介质故障
由于介质损坏等所引起的故障,影响是全面的,既影响内存中的数据,又影响介质中存储的数据。
数据库故障恢复
定义
把DB由当前不正确状态恢复到已知为正确的某一状态。
注意
故障恢复是DBMS核心技术
事务故障恢复的手段
事务故障可通过重做事务Redo和撤销事务Undo来恢复。重做事务可保证已提交事务的持久性,而撤销事务则消除未提交事务的影响。
系统故障恢复的手段
运行日志System Log
- 运行日志是DBMS维护的一个文件,该文件以流水方式记录了每一个事务对数据库的每一次操作及操作顺序。
- 运行日志直接写入介质存储上,会保持正确性。
- 当事务对数据库进行操作时,先写运行日志;写成功后,再与数据库缓冲区进行信息交换。
- 按照运行日志记录的事务操作顺序重做事务(当事务发生故障时已正确结束)或撤销事务(当事务在发生故障时未结束)
- 当然由于故障恢复是需要时间的,所以DBMS为了不用每次从头开始必须在运行日志中定期设置和更新检查点
检查点
检查点是这样的时刻:在此时刻,DBMS强制使内存DB Buffer中的内容与介质DB中的内容保持一致,即将DB Buffer更新的所有内容写回DB中。
注意:检查点表明在检查点之前内存中数据与介质中数据是保持一致的。
介质故障恢复
采用副本替换被损坏的数据库。
副本就是用其他介质存储产生一份等同记录的数据库。
如何确定备份时刻:转储点
过频,影响系统工作效率,过疏,会造成运行日志过大,也影响系统运行性能。
备份转储周期与运行日志的大小密切相关,应注意防止衔接不畅而引起的漏洞。
关于数据库三种故障的总结