目录

数据库原理-恢复策略

目录

数据库原理 恢复策略

三种不同的数据库故障,其恢复数据库的策略也是不同的

  • 事务故障的恢复
  • 系统故障的恢复
  • 介质故障的恢复

1、事务故障的恢复

事务故障:事务运行至正常终点前被终止

恢复方法:利用日志文件撤销此事务对数据库进行的修改

恢复步骤

  • 反向扫描日志文件,查找该事务的更新操作
  • 对该事务的更新操作执行逆操作:即是将更新前的值写入数据库

特点:事务故障的恢复由系统自动完成,不需要用户进行干预

2、系统故障的恢复

系统故障造成数据库不一致性的原因:

  • 未完成事务对数据库的更新已经写入数据库
  • 已经提交的事务仍然留在缓冲区,没有写入数据库

恢复的方法:

  • Undo故障发生时未发生的事务
  • Redo已经完成的事务

恢复的步骤:

  • 正向扫描日志文件,根据有无BEGIN TRANSACTION和COMMIT记录来分类Undo队列和Redo队列
  • 对Undo队列的事务进行撤销处理(反向扫描,将更新前的值写入数据库)
  • 对Redo队列的事务进行重做处理(正向扫描,将更新后的值写入数据库)

特点:系统故障的恢复由系统在重新启动的时候自动恢复,不需要用户干预

3、介质故障的恢复:

  • 重装数据库
  • 重做已经完成的事务

恢复步骤:

①、装入最新的后备数据库副本,是数据库恢复到最近一次数据库一致性的状态

  • 对于静态转储的数据库副本,装入后数据库即处于一致性的状态
  • 对于动态转储的数据库副本,还必须装入转储时刻的日志文件副本,利用恢复系统故障的方法,才能将数据库恢复一致性状态

②、装入有关的日志文件副本,重做已经完成的事务

  • 首先扫描日志文件,找出故障发生时已经提交的事务的表示,将其记入重做队列
  • 然后正向扫描日志文件,将重做队列中的事务进行重做处理,即将更新后的值写入数据库

特点:介质故障的恢复需要管理员的介入

管理员的工作:

  • 重装最近一次的数据库副本以及日志文件副本
  • 执行系统提供的恢复命令,但是具体的恢复操作仍由数据库管理系统完成

3、小结

https://i-blog.csdnimg.cn/blog_migrate/11c74abde4d3dba18c1e0143f3d49555.png