6.4.2 数据库恢复
在系统发生故障后,把数据库恢复到原来的某种一致性状态的技术称为“恢复”,其基本原理是利用“冗余”进行数据库恢复。问题的关键是如何建立“冗余”并利用“冗余”实施数据库恢复,即恢复策略。数据库恢复技术一般有3种策略,即基于备份的恢复、基于运行时日志的恢复和基于镜像数据库的恢复。
(1)基于备份的恢复
基于备份的恢复是指周期性地备份数据库。当数据库失效时,可取最近一次的数据库备份来恢复数据库,即把备份的数据拷贝到原数据库所在的位置上。用这种方法,数据库只能恢复到最近一次备份的状态,而从最近备份到故障发生期间的所有数据库更新将会丢失。备份的周期越长,丢失的更新数据越多。
(2)基于运行时日志的恢复
运行时日志文件是用来记录对数据库每一次更新的文件。对日志的操作优先于对数据库的操作,以确保记录数据库的更改。当系统突然失效而导致事务中断时,可重新装入数据库的副本,把数据库恢复到上一次备份时的状态。然后系统自动正向扫描日志文件,将故障发生前所有提交的事务放到重做队列,将未提交的事务放到撤销队列执行,这样就可把数据库恢复到故障前某一时刻的数据一致性状态。
(3)基于镜像数据库的恢复
数据库镜像就是在另一个磁盘上复制数据库作为实时副本。当主数据库更新时,DBMS自动把更新后的数据复制到镜像数据,始终使镜像数据和主数据保持一致性。当主库出现故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库恢复。镜像策略可以使数据库的可靠性大为提高,但由于数据镜像通过复制数据实现,频繁复制会降低系统运行效率,因此一般在对效率要求满足的情况下可以使用。为兼顾可靠性和可用性,可有选择性地镜像关键数据。
数据库的备份和恢复是一个完善的数据库系统必不可少的一部分,目前这种技术已经广泛应用于数据库产品中,如Oracle数据库提供对联机备份、脱机备份、逻辑备份、完全数据恢复及不完全数据恢复的全面支持。以“数据”为核心的计算(Data Centric Computing)将逐渐取代以“应用”为核心的计算。在一些大型的分布式数据库应用中,多备份恢复和基于数据中心的异地容灾备份恢复等技术正在得到越来越多的应用。