12.3.3 数据库恢复

2025-07-26 22:43:35 更新

要使数据库在发生故障后能够恢复,必须建立冗余数据,在故障发生后利用这些冗余数据实施数据库恢复。

建立冗余数据常用的技术是数据转储和建立日志文件。

在一个数据库系统中,这两种方法一般是同时被采用的。

1.故障恢复的两个操作

有了数据转储和日志文件,就可以在系统发生故障时进行恢复。

故障恢复有撤销事务(UNDO)和重做事务(REDO)两个操作。



说明

过程

1

撤销事务(UNDO)

撤销未完成的事务,使数据库恢复到事务执行前的正确状态。

反向扫描未完成的事务日志(由后向前扫描)

Update->新值变回旧值 Insert->DeleteDelete->Insert

2

重做事务(REDO)

将已经提交的事务重新执行


从事务开始标识起,正向扫描日志文件,重新执行日志文件记录的该事务所有操作,直至事务结束标识。


2-故障恢复策略


类型

说明

策略

1

事务故障恢复

事务在运行至正常终止点(COMMIT或ROLLBACK)前终止,日志文件只有该事务的开始标识而没有结束标识。

UNDO操作使数据库恢复到该事务执行前的正确状态(对事务更新操作执行逆操作)

撤销(UNDO)事务

由系统自动完成,对用户透明

2

系统故障恢复

系统故障会使数据库的数据不一致

(1)未完成的事务的更新可能已入库

(2)已提交的事务更新可能还在缓冲区未入库

撤销未完成事务,重做(REDO)已提交事务

系统重启后自动恢复

3

介质故障恢复

数据库遭到破坏,需要重装数据库

装载故障前最近一次的备份和日志文件副本,再按照系统故障的恢复过程执行撤销和重做。

系统管理员(DBA)先介入,装入数据库副本和日志文件副本,

再由系统执行撤销和重做操作。