数据库的恢复技术探析

2012-02-27 04:55赵文海赵祥敏
中国科技纵横 2012年2期
关键词:磁盘事务日志

赵文海 赵祥敏

摘要:文章概述了数据库恢复技术的种类,介绍了数据库发生故障时常见的恢复方法,同时针对不同的失效类型提出了恢复对策,以供参考。

关键词:数据库恢复方法

1、前言

数据库的失效往往导致一个机构的瘫痪,然而,任何一个数据库系统总不可能不发生故障。数据库系统对付故障有两种办法:其一是尽可能提高系统的可靠性;另一种方法是在系统发生故障后,把数据库恢复至原来的状态。

2、恢复技术的种类

2.1 单纯以北方为基础的恢复技术

单纯以备份为基础的恢复技术是由文件系统恢复技术演变而来的,即周期性地把磁盘上的数据库复制或转储到磁带上。由于磁带是脱机存放的,系统对它没有任何影响。当数据库失效时,可以取最近一次从磁盘复制到磁带上的数据库备份来恢复数据库。利用这种方法,数据库只能恢复到最近的备份状态,而从最近备份到故障发生期间所有数据库的更新数据将会丢失,这意味着备份周期越长,丢失更新的数据也就越多。因此,这种恢复技术只适用于小型和不太重要的数据库系统。

2.2 以备份和运行日志为基础的恢复技术

系统运行日志用于记录数据库运行的情况,一般包括三个内容:前像、后像和事物状态。

所谓前像是指数据库被一个事物更新时,所涉及的物理块更新后的影像,它以物理块为单位。前像在恢复中所起的作用是帮助数据库恢复更新前的状态,即撤销更新。后像恰好与前像相反,它是当数据库被某一事物更新时,所涉及的物理块更新前的影像,其单位和前像一样以物理块为单位。后像的作用是帮助数据库恢复到更新后在状态,相当于重做一次更新。运行日志中的事物状态记录每个事物的状态,以便在数据库恢复时作不同的处理。

2.3 基于多备份的恢复技术

多备份恢复技术的前提的每个备份必须具有独立的失效模式,这样可以利用这些备份互为备份,用于恢复。所谓独立失效模式是指各个备份不至于因同一故障而一起失效。获得独立失效模式的一个重要要素是各备份的支持环境尽可能地独立,其中包括不共用电源、磁盘、控制器以及CPU等。在部分可靠要求较高的系统中,采用磁盘镜像技术,即数据库以双备份的形式存放在两个独立的磁盘系统中,为了使失效模式独立,两个磁盘系统有各自的控制器和CPU,但彼此可以相互切换。在读数据时,可以选读其中任一磁盘;在写数据时,两个磁盘都可以写入同样的内容。当一个磁盘数据丢失时,可用另一个磁盘的数据来恢复。

这种恢复技术在分布式数据库系统中用得较多,这完全是出于性能或其他考虑,在不同的结点上设有数据备份,而这些数据备份由于所处的结点不同,其失效模式也比较独立。

3、恢复的方法

数据库的恢复大致有以下几种方法:

(1)以周期性地对整个数据库进行转储,把它复制到备份介质中,作为后备副本,以备恢复之用。

转储通常又可分为精通转储和动态转储。静态转储是指转储期间不允许(或不存在)对数据库进行任何存取、修改活动,而动态转储是指在存储期间允许对数据库进行存取或修改。

(2)对数据库的每次修改,都记下修改前后的值,写入“运行日志”中,与后备副本结合,可有效地恢复数据库。

日志文件是用来记录数据库每一次更新活动的文件。在动态转储方式中必须建立日志文件,后备文件副本和日志文件综合起来才能有效地恢复数据库。在静态转储方式中,也可以建立日志文件。当数据库毁坏后可重新装入后备副本把数据库恢复到转储结束时刻的正确状态。然后利用日志文件,把已完成的事务进行重新处理,对故障发生时尚未完成的事务进行撤销处理。这样不必重新运行那些已完成的事务程序就可以把数据库恢复到故障前某一时刻的正确状态。

4、失效的类型及恢复的对策

一个数据库恢复方法的恢复能力总是有限的,一般往往只对某一类型的失效有效,在任何情况下都适用的恢复方法是没有的。在前述的恢复方法中都需要备份,如果备份由于不可抗拒的因素损坏,那么,前述的恢复方法就无能为力。通常的恢复方法都是针对概率较高的失效,这些失效分为三类:事务失效、系统失效和介质失效。

4.1 事务失效

事务失效发生在事务提交之前,事务一旦提交,即使要撤销也不可能了。造成事务失效的原因主要有以下几个方面:(1)事务无法执行而自行中止;(2)操作失误或改变主意而要求撤销事务;(3)由于系统调度上的原因而中止某些事务的执行。

对于事务失效,可采取如下措施予以恢复:(1)消息管理丢弃该事务的消息队列;(2)如果需要可进行撤销;(3)从事务表中删除该事务的事务标识,释放该事务占有的资源。

4.2 系统失效

这里所指的系统包括操作系统和数据库管理系统。系统失效是指系统崩溃,必须重新启动系统,内存中的数据可能丢失,而数据库中的数据未遭到破坏。发生系统失效的原因有:(1)掉电;(2)除数据库存储介质外的硬、软件故障;(3)重新启动操作系统和数据库管理系统;(4)恢复数据库至一致状态时,对未提交的事务进行了Undo操作,对已提交的事务进行了Redo的操作。

4.3 介质失效

介质失效是指磁盘发生故障,数据受损,如划盘、磁头破损等。现代的DBMS对介质失效一般都提供恢复数据库至最近状态的措施,具体过程如下:(1)恢复系统,必要时更换磁盘;(2)如果系统崩溃,则重新启动系统;(3)加载最近的备份;(4)用运行日志中的后像重做,去最近备份以后提交的所有事务。

从介质失效中恢复数据库的代价是最高的,而且要是运行日志提供所有事务的后像,工作量很大。但是为了保证数据库的安全,这些代价又是必须要付出的。

参考文献

[1]娄燕飞,杨树强.《一种基于组通信的复制数据库在线恢复策略研究》.计算机研究与发展,2007.

[2]林烈青.《基于事务日志的数据库恢复机制研究》.现代计算机(专业版),2009.

猜你喜欢
磁盘事务日志
基于分布式事务的门架数据处理系统设计与实现
一名老党员的工作日志
扶贫日志
河湖事务
修改磁盘属性
游学日志
磁盘组群组及iSCSI Target设置
创建VSAN群集
一种基于粗集和SVM的Web日志挖掘模型
SQLServer自治事务实现方案探析