数据库原理-恢复策略
目录
数据库原理 恢复策略
三种不同的数据库故障,其恢复数据库的策略也是不同的
- 事务故障的恢复
- 系统故障的恢复
- 介质故障的恢复
1、事务故障的恢复
事务故障:事务运行至正常终点前被终止
恢复方法:利用日志文件撤销此事务对数据库进行的修改
恢复步骤
- 反向扫描日志文件,查找该事务的更新操作
- 对该事务的更新操作执行逆操作:即是将更新前的值写入数据库
特点:事务故障的恢复由系统自动完成,不需要用户进行干预
2、系统故障的恢复
系统故障造成数据库不一致性的原因:
- 未完成事务对数据库的更新已经写入数据库
- 已经提交的事务仍然留在缓冲区,没有写入数据库
恢复的方法:
- Undo故障发生时未发生的事务
- Redo已经完成的事务
恢复的步骤:
- 正向扫描日志文件,根据有无BEGIN TRANSACTION和COMMIT记录来分类Undo队列和Redo队列
- 对Undo队列的事务进行撤销处理(反向扫描,将更新前的值写入数据库)
- 对Redo队列的事务进行重做处理(正向扫描,将更新后的值写入数据库)
特点:系统故障的恢复由系统在重新启动的时候自动恢复,不需要用户干预
3、介质故障的恢复:
- 重装数据库
- 重做已经完成的事务
恢复步骤:
①、装入最新的后备数据库副本,是数据库恢复到最近一次数据库一致性的状态
- 对于静态转储的数据库副本,装入后数据库即处于一致性的状态
- 对于动态转储的数据库副本,还必须装入转储时刻的日志文件副本,利用恢复系统故障的方法,才能将数据库恢复一致性状态
②、装入有关的日志文件副本,重做已经完成的事务
- 首先扫描日志文件,找出故障发生时已经提交的事务的表示,将其记入重做队列
- 然后正向扫描日志文件,将重做队列中的事务进行重做处理,即将更新后的值写入数据库
特点:介质故障的恢复需要管理员的介入
管理员的工作:
- 重装最近一次的数据库副本以及日志文件副本
- 执行系统提供的恢复命令,但是具体的恢复操作仍由数据库管理系统完成
3、小结