📜  分布式DBMS-数据库恢复

📅  最后修改于: 2021-01-07 05:31:31             🧑  作者: Mango


为了从数据库故障中恢复过来,数据库管理系统采用了许多恢复管理技术。在本章中,我们将研究数据库恢复的不同方法。

数据库恢复的典型策略是-

  • 如果出现软故障导致数据库不一致,则恢复策略包括事务撤消或回滚。但是,有时也可以采用事务重做来恢复到一致的事务状态。

  • 如果发生严重故障导致数据库受到广泛破坏,则恢复策略包括从档案备份中还原数据库的过去副本。通过从事务日志重做已提交事务的操作,可以获得数据库的最新状态。

从电源故障中恢复

电源故障会导致非永久性内存中的信息丢失。恢复电源后,操作系统和数据库管理系统将重新启动。恢复管理器从事务日志启动恢复。

在即时更新模式下,恢复管理器将执行以下操作-

  • 活动列表和失败列表中的事务将被撤消并写入中止列表中。

  • 重做提交前列表中的事务。

  • 对于提交或中止列表中的事务,不执行任何操作。

在推迟更新模式的情况下,恢复管理器将执行以下操作-

  • 活动列表和失败列表中的事务将被写入中止列表。由于更改尚未写入磁盘,因此不需要撤消操作。

  • 重做提交前列表中的事务。

  • 对于提交或中止列表中的事务,不执行任何操作。

从磁盘故障中恢复

磁盘故障或硬崩溃会导致数据库整体丢失。为了从这次硬崩溃中恢复,准备了一个新磁盘,然后还原了操作系统,最后使用数据库备份和事务日志恢复了数据库。立即更新和延迟更新模式的恢复方法相同。

恢复管理器采取以下操作-

  • 重做提交列表和提交前列表中的事务,并将其写入事务日志中的提交列表中。

  • 撤消活动列表和失败列表中的事务,并将其写入事务日志中的中止列表。

检查点

Checkpoint是将记录从缓冲区写入数据库的时间点。因此,在系统崩溃的情况下,恢复管理器不必重做在检查点之前已提交的事务。定期检查点可以缩短恢复过程。

两种类型的检查点技术是-

  • 一致的检查点
  • 模糊检查点

一致的检查点

一致的检查点在检查点处创建数据库的一致映像。在恢复期间,仅撤消或重做最后一个检查点右侧的那些事务。最后一个一致检查点左侧的事务已提交,因此无需再次进行处理。检查点采取的行动是-

  • 活动交易被暂时暂停。
  • 主内存缓冲区中的所有更改都将写入磁盘。
  • “检查点”记录被写入事务日志中。
  • 事务日志将写入磁盘。
  • 暂停的事务将恢复。

如果在步骤4中也存储了事务日志,则此检查点有助于从磁盘故障和电源故障中恢复,否则,仅有助于从电源故障中恢复。

模糊检查点

在模糊检查点中,在进行检查点时,所有活动事务都将写入日志中。如果发生电源故障,恢复管理器将仅处理在检查点及以后期间处于活动状态的那些事务。在检查点之前已提交的事务将写入磁盘,因此无需重做。

检查点示例

让我们考虑一下,在系统中,检查点的时间为tcheck,系统崩溃的时间为tfail。假设有四个事务T a ,T b ,T c和T d使得-

  • T a在检查点之前提交。

  • T b在检查点之前开始,并在系统崩溃之前提交。

  • T c在检查点之后开始,并在系统崩溃之前提交。

  • T d在检查点之后开始,并在系统崩溃时处于活动状态。

下图描述了这种情况-

描绘情况

恢复管理器采取的操作是-

  • T a不会做任何事情。
  • 对T b和T c执行事务重做。
  • 对T d执行事务撤消。

使用UNDO / REDO进行事务恢复

进行事务恢复是为了消除故障事务的不利影响,而不是从故障中恢复。错误事务包括将数据库更改为不良状态的所有事务,以及使用了错误事务写入的值的事务。

在这些情况下的事务恢复是一个两步过程-

  • 撤消所有错误事务和可能受错误事务影响的事务。

  • 重做所有非故障但由于故障事务而已撤消的事务。

撤消操作的步骤是-

  • 如果故障事务已完成INSERT,则恢复管理器将删除插入的数据项。

  • 如果故障事务已完成DELETE,则恢复管理器将从日志中插入已删除的数据项。

  • 如果错误的事务已完成UPDATE,则恢复管理器通过从日志中写入更新前的值来消除该值。

REDO操作的步骤是-

  • 如果事务已完成INSERT,则恢复管理器将从日志中生成一个插入。

  • 如果事务已完成DELETE,则恢复管理器将从日志中生成一个删除。

  • 如果事务已完成UPDATE,则恢复管理器将从日志中生成更新。