分布式数据库管理系统 - 数据库恢复



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

数据库恢复的典型策略包括:

  • 对于导致数据库不一致的软故障,恢复策略包括事务撤销或回滚。但是,有时也可能采用事务重做以恢复到事务的一致状态。

  • 对于导致数据库严重损坏的硬故障,恢复策略包括从归档备份中恢复数据库的过去副本。通过重做事务日志中已提交的事务的操作,可以获得数据库的更当前状态。

从电源故障中恢复

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

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

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

  • 处于提交前列表中的事务将被重做。

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

在延迟更新模式下,恢复管理器将执行以下操作:

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

  • 处于提交前列表中的事务将被重做。

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

从磁盘故障中恢复

磁盘故障或硬盘崩溃会导致数据库完全丢失。要从这种硬盘崩溃中恢复,需要准备一个新磁盘,然后恢复操作系统,最后使用数据库备份和事务日志恢复数据库。恢复方法对于立即更新模式和延迟更新模式都是相同的。

恢复管理器将执行以下操作:

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

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

检查点

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

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

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

一致性检查点

一致性检查点在检查点处创建数据库的一致映像。在恢复期间,仅撤销或重做最后一个检查点右侧的事务。最后一个一致性检查点左侧的事务已提交,无需再次处理。检查点的操作包括:

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

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

模糊检查点

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

检查点示例

让我们考虑一下,在系统中,检查点的时间为 tcheck,系统崩溃的时间为 tfail。假设有四个事务 Ta、Tb、Tc 和 Td,其中:

  • Ta 在检查点之前提交。

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

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

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

这种情况在下图中描述:

Depicted Situation

恢复管理器采取的操作包括:

  • 对 Ta 不执行任何操作。
  • 对 Tb 和 Tc 执行事务重做。
  • 对 Td 执行事务撤销。

使用撤销/重做进行事务恢复

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

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

  • 撤销所有故障事务以及可能受故障事务影响的事务。

  • 重做所有未出错但由于故障事务而被撤销的事务。

撤销操作的步骤包括:

  • 如果故障事务已执行插入操作,则恢复管理器将删除插入的数据项。

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

  • 如果故障事务已执行更新操作,则恢复管理器将通过从日志中写入更新前值来消除该值。

重做操作的步骤包括:

  • 如果事务已执行插入操作,则恢复管理器将从日志中生成插入操作。

  • 如果事务已执行删除操作,则恢复管理器将从日志中生成删除操作。

  • 如果事务已执行更新操作,则恢复管理器将从日志中生成更新操作。

广告