1、数据库恢复的原理
数据库恢复的原理主要是在数据库发生故障之后,建立冗余数据,在故障发生之后利用冗余数据来完成数据库恢复。数据转储和建立日志文件是建立冗余数据常用的技术手段。一般情况下两种技术手段会同时使用。
2、故障恢复的两个操作
故障恢复有撤销事务(UNDO)、重做(REDO)两个操作。
2.1 撤销操作
撤销事务就是将未完成的事务撤销,使数据库恢复到事务执行前的正确状态。
撤销事务的过程:反向扫描未完成的事务日志,查找事务的更新操作;对该事务的更新操作执行反向操作,然后利用日志文件记录中更新前的值写入数据库,插入的记录从数据库中删掉,删除的记录重新插入数据库中;
继续反向扫描日志文件,重复以上操作,直到事务开始标志。
2.2 重做事务
重做事务是将已经提交的事务重新执行。
重做事务的过程:从事务的开始标识开始,正向扫描日志文件,重新执行日志文件登记的对事务对数据库的所有操作,直到事务结束标识。
3、故障恢复策略介绍
针对不同的数据故障应该采取不同的恢复策略。
3.1 事务故障恢复
事务故障是在事务在运行至正常终止点(提交、回滚)之前终止。日志文件只有该事务的开始标识而没有结束标识。一般针对这类故障的恢复通过撤销产生的故障事务,使数据库恢复到该事务执行前的正确状态来完成。
事务恢复步骤如下:
反向扫描文件日志,查找该事务的更新操作
对事务的更新操作执行反向操作
继续反向扫描日志文件,做同样处理直到事务的开始标志
说明:事务的故障恢复由系统自动完成,对用户是透明的。
3.2 系统故障的恢复
系统故障会造成数据库的数据不一致。主要原因:未完成的事务对书库的更新操作可能已经写入了数据库;已提交的事务对数据库的更新可能还在缓冲区没来得及写入数据库。系统故障数据恢复要撤销故障发生时未完成的事务,重做已提交的事务。
3.3 介质故障的恢复
介质故障由数据库遭到破坏,需要重装数据库,需要装载故障前最近依次的备份和故障前的日志文件副本,再按照系统故障的恢复过程执行撤销和重做操作来进行恢复。
说明:介质故障要有数据库管理员来参与,装入数据库的副本和日志文件的副本,再由数据库系统执行撤销和重做操作。
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识