首页 理论教育 数据库恢复的原理及实现技术-现代数据库原理

数据库恢复的原理及实现技术-现代数据库原理

时间:2023-10-21 理论教育 版权反馈
【摘要】:事务是数据库的基本工作单位。保证数据一致性是对数据库的最基本的要求。数据库恢复的基本原理十分简单,就是利用数据的冗余。所以,为了充分利用动态备份的信息,恢复数据库的功能,还要及时记录进行备份工作期间其他事务执行操作的活动,设立相关记录文档。工作人员应该结合数据库的运行状况制定切实可行的备份计划。

数据库恢复的原理及实现技术-现代数据库原理

事务数据库的基本工作单位。一个事务中包含的操作要么全部完成,要么全部不做。也就是说,每个运行事务对数据库的影响或者都反映在数据库中,或者都不反映在数据库中,两者必居其一。如果数据库中只包含成功事务提交的结果,就说此数据库处于一致性状态。保证数据一致性是对数据库的最基本的要求。数据库恢复的基本原理十分简单,就是利用数据的冗余。数据库中任何破坏或不正确的数据可以利用存储在系统其他地方的冗余数据来修复。因此,恢复系统应该提供两种类型的功能:一种是生成冗余数据,即对可能发生的故障做某些准备;另一种是冗余重建,即利用这些冗余数据恢复数据库。

生成冗余数据最常用的技术是数据备份和登记日志文件,在实际应用中,这两种方法常结合起来一起使用。

(一)数据备份

数据备份也被称为转储。备份就是将数据库的信息按一定周期转存到其他装置上。例如,磁带、光盘等,它们是储存恢复信息资源的有效途径。经过备份处理的信息也被称为后备副本或后援副本。如果数据库系统的运行遭到破坏,系统就可以利用副本资源重新导入信息,恢复数据库的正常运行。数据备份需要大量的时间和资源,要设定合理的备份频率,结合数据库的运行情况,确定备份周期。

数据备份可以分为海量备份和增量备份两种方式。海量备份是指备份数据库的全部信息资源。增量备份的对象是经过上次备份后再次更新的数据。数据库系统中信息的更新情况都被记录在相关的文件中,将再次更新的信息记录在原来存储的位置,替换上次备份的资源。这就是完整的数据备份操作。这种方法与备份整个系统信息的结果是一致的,但相比较之下,需要耗费的时间和资源要少很多。从管理学角度来看,经过海量备份后得到的信息更有利于系统的恢复。但如果数据库的信息量较大,工作任务量繁多,增量备份更加适用。

根据备份数据的状态,可以将备份分为动态状态和静态状态两种。执行备份的状态可以是静态的,也可以是动态的。

静态备份又称为离线备份,是指数据库系统在无事务执行任务的情况下的备份状态。在执行备份任务阶段,数据库的信息处于统一状态;在备份期间,禁止信息资源的存储、提取和更改活动。很明显,通过静态备份得到的信息副本是较为完整、统一的。静态备份的优势是简单、易操作,但是在执行静态备份期间不能执行其他任务,所以减少了并行操作,大大降低了数据库的工作效率。

动态备份又称为在线备份,是指备份任务与事务可以共同进行,在开展备份工作阶段可以针对数据库的信息进行存储、提取和更改。动态备份不需要等待事务完成相应的任务再开展备份,并且可以与新事务一同进行,增强了数据库的利用效率,但不能确保复制下来的副本的可利用性。例如,在备份期间的某个时刻T1,系统把数据A=300备份到磁带上,而在下一时刻T2,某一事务将A改为200。备份结束后,后备副本上的A已是过时的数据了。

所以,为了充分利用动态备份的信息,恢复数据库的功能,还要及时记录进行备份工作期间其他事务执行操作的活动,设立相关记录文档。将经过动态备份留存的信息与记录文档结合起来使用,就能够将数据库的相关资源恢复为正常状态。如果备份信息与系统故障越相似,则执行恢复工作成功的概率就越大,更加有利于信息的恢复。因此应该定期进行数据恢复工作,制作后备副本。但是,备份是一项耗资较大的活动,应该把握好备份的频率。工作人员应该结合数据库的运行状况制定切实可行的备份计划。例如,某一银行数据库系统的备份策略是每天21:00进行一次动态增量备份,每周五24:00进行一次动态海量备份,每月28日24:00进行一次静态海量备份。

(二)登记日志文件

日志文件(Logging)是用来记录事务对数据的更新操作的文件。对数据库的每次修改,都将被修改项目的原始值和新值写在一个称为运行日志的文件中,目的是为数据库的恢复保留详细的数据。

各个数据库系统记录事务操作的形式是截然不同的。根据日志记录信息的单位形式,可以将日志分为两种形式:单位为记录的日志和单位为数据块的日志。

1.单位为记录的日志文件

单位为记录的日志文件,文档中需要录入的内容如下:

(1)各项事务开始执行任务的节点。

(2)各项事务结束任务的节点。

(3)各项事务更新系统信息的行为。(www.xing528.com)

记录文档的具体内容如下:

(1)事务标记。

(2)任务类别(添加、清除或更改)。

(3)执行任务的对象。

(4)更新日志文档中的旧值。

(5)更新日志文档中的新值。

(6)执行数据库任务过程中的重要节点。

2.单位为数据块的日志文档

如果数据块中的信息被更新,必须将变化前后的信息资源如实地录入数据库的日志文档中。

日志文件是恢复数据库系统正常功能的有力武器,可以通过日志文件中的记录恢复事务故障[6]和系统故障[7],并且与备份数据共同恢复介质故障[8]

日志文件是数据库在进行运作过程中的流程记录,所以信息记录必须具备较高的真实性。大多数流程副本都是两个,并且各自分布在独立的存储空间上。日志文件存储大量的运行信息,出于安全性考虑,大多储存在外部存储器上。

在对数据库修改时,在运行日志中要写入一个表示这个修改的运行记录。为了防止两种操作之间发生故障,若运行日志中没有记录下这个修改,以后也无法撤消这个修改。为保证数据库是可恢复的,登记日志文件必须遵循以下两条原则:

(1)至少要等到相应运行记录的撤消部分已经写入日志文件中以后,才允许该事务向物理数据库中写入记录。

(2)直到事务的所有运行记录的撤消和重做部分都已写入日志文件中以后,才允许完成提交处理。

这两条原则称为日志文件的先写原则。先写原则表明:如果系统出现故障,只可能在日志文件中登记所做的修改,但没有修改数据库。这样在系统重新启动进行恢复时,只是撤消或重做因发生事故而没有做过的修改,不会增加数据库错误率。如果先针对数据库进行了更改,并且没有将操作流程录入数据库中,以后出现故障就无法进行恢复。所以为了确保数据库的正常运行,应该先将操作记录到日志文件中,再针对数据库的故障进行更改和恢复。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈