数据库恢复系统:保障数据一致性与可用性
1. 系统故障概述
计算机如同其他电气或机械设备一样,难免会出现故障。这些故障的成因多种多样,包括磁盘故障、停电、软件错误、计算机房火灾,甚至是蓄意破坏。在这些情况下,数据库中的信息都有可能丢失。
1.1 故障类型
- 事务故障 :事务可能因两种错误而失败。一是逻辑错误,即事务因内部条件(如输入错误、未找到数据、溢出或资源超限)而无法正常执行;二是系统错误,系统处于非期望状态(如死锁),导致事务无法正常执行,但后续可重新执行。
- 系统崩溃 :硬件故障、数据库软件或操作系统错误会导致易失性内存内容丢失,事务处理中断,但非易失性内存内容保持完整且未损坏。这种假设被称为故障 - 停止假设,设计良好的系统在硬件和软件层面有诸多内部检查机制,当出现错误时会中止系统,因此该假设是合理的。
- 磁盘故障 :磁盘的某个块可能因磁头碰撞或数据传输操作失败而丢失内容。可利用其他磁盘上的数据副本或磁带等二级存储设备中的备份文件来恢复。
1.2 恢复算法
为了确定系统如何从故障中恢复,需要识别存储设备的故障模式,了解其对数据库内容的影响,进而提出保证数据库一致性和事务原子性的恢复算法。这些算法包括两部分:一是在事务正常处理期间采取行动,确保有足够信息用于故障恢复;二是在故障发生后采取行动,将数据库内容恢复到保证一致性、原子性和持久性的状态。