第10章 数据库恢复技术_第1页
第10章 数据库恢复技术_第2页
第10章 数据库恢复技术_第3页
第10章 数据库恢复技术_第4页
第10章 数据库恢复技术_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库系统数据库系统原理与实践原理与实践第十章第十章 数据库恢复技术数据库恢复技术恢复技术概述恢复技术概述1故障类型故障类型22基于日志的恢复技术基于日志的恢复技术3备份与恢复备份与恢复45故障恢复策略故障恢复策略10.1 10.1 恢复技术概述恢复技术概述v数据库的数据存取数据库的数据存取 数据块是磁盘数据传输的基本单位,一个数据数据块是磁盘数据传输的基本单位,一个数据块可能包含一个或多个数据项。块可能包含一个或多个数据项。 在事务运行过程中,事务操作的相关数据块由在事务运行过程中,事务操作的相关数据块由磁盘向主存输入,然后再将处理后的数据块输磁盘向主存输入,然后再将处理后的数据块输出回磁盘

2、。出回磁盘。 输入和输出操作以数据块为单位完成,其中位输入和输出操作以数据块为单位完成,其中位于磁盘上的数据块称为物理块,临时位于主存于磁盘上的数据块称为物理块,临时位于主存的数据块称为缓冲块。的数据块称为缓冲块。 内存中用于临时存放缓冲块的区域称为磁盘缓内存中用于临时存放缓冲块的区域称为磁盘缓冲区冲区310.1 10.1 恢复技术概述恢复技术概述v数据库的数据存取数据库的数据存取 数据从物理块到缓冲块,称为输入(数据从物理块到缓冲块,称为输入(InputInput)操作;数据从缓冲块到物理块,称为输出操作;数据从缓冲块到物理块,称为输出(OutputOutput)操作。执行这两个操作的命令如

3、下:)操作。执行这两个操作的命令如下: Input(x) Input(x) 表示从磁盘上读出包含数据项表示从磁盘上读出包含数据项x x的数据块的数据块传送到主存的缓冲块中;传送到主存的缓冲块中; Output(x) Output(x) 表示将主存中包含数据项表示将主存中包含数据项x x的缓冲块写的缓冲块写到磁盘的物理块上。到磁盘的物理块上。410.1 10.1 恢复技术概述恢复技术概述v数据库的数据存数据库的数据存取取 事务对数据进行更新操作时,将所更新的数据事务对数据进行更新操作时,将所更新的数据项在工作区和缓冲区之间进行交换,这个过程项在工作区和缓冲区之间进行交换,这个过程用命令用命令re

4、adread和和writewrite实现实现 read(x, t)read(x, t):将数据项:将数据项x x的值传送到工作区的局部的值传送到工作区的局部变量变量t t中,可简写为中,可简写为read(x)read(x)。这个操作的执行过程。这个操作的执行过程如下:如下: 如果包含数据项如果包含数据项x x 的数据缓冲块不在内存,那么的数据缓冲块不在内存,那么发出发出input(x)input(x)命令;命令; 从缓冲块中将从缓冲块中将x x值送到工作区中的局部变量值送到工作区中的局部变量t t中。中。 write(x, t)write(x, t):将局部变量:将局部变量t t的值传送到缓冲

5、块的的值传送到缓冲块的x x中,可简写为中,可简写为write(x)write(x)。510.1 10.1 恢复技术概述恢复技术概述v数据库的数据存数据库的数据存取取6图图10.1 10.1 数据库读写操作的数据传递方式数据库读写操作的数据传递方式 10.1 10.1 恢复技术概述恢复技术概述v主要数据库恢复技术主要数据库恢复技术 数据库恢复的主要技术是基于日志的恢复技术数据库恢复的主要技术是基于日志的恢复技术和基于备份的恢复技术。和基于备份的恢复技术。 日志文件记录了事务对数据库执行的各类更新操作,日志文件记录了事务对数据库执行的各类更新操作,如添加、删除、修改等等,当需要对数据库系统进如添

6、加、删除、修改等等,当需要对数据库系统进行恢复时,根据日志文件中记录的事务的运行情况,行恢复时,根据日志文件中记录的事务的运行情况,确定哪些事务需要进行撤销,哪些事务需要重新运确定哪些事务需要进行撤销,哪些事务需要重新运行,这样就可以将数据库恢复到发生故障前的某个行,这样就可以将数据库恢复到发生故障前的某个一致的状态。一致的状态。 数据库备份是在某一时刻为数据库建立副本,备份数据库备份是在某一时刻为数据库建立副本,备份过程也称为数据转储。出现故障时将某个副本重新过程也称为数据转储。出现故障时将某个副本重新装载,就可以恢复到建立副本时的正确的数据库状装载,就可以恢复到建立副本时的正确的数据库状态

7、。态。710.2 10.2 故障类型故障类型v事务故障事务故障 事务是对数据库操作的集合,对数据库操作产事务是对数据库操作的集合,对数据库操作产生的故障为事务故障生的故障为事务故障 数据输入错误数据输入错误 运算溢出运算溢出 并发事务发生死锁并发事务发生死锁 出现事务故障,事务就不会提交,此时数据库出现事务故障,事务就不会提交,此时数据库处于一种不正确状态,可以通过回滚处于一种不正确状态,可以通过回滚(ROLLBACKROLLBACK)该事务,撤销该事务对数据库进)该事务,撤销该事务对数据库进行的修改等操作,使数据库返回到之前的正确行的修改等操作,使数据库返回到之前的正确状态。状态。810.2

8、 10.2 故障类型故障类型v系统故障系统故障 计算机系统出现的故障计算机系统出现的故障 硬件错误硬件错误 操作系统错误操作系统错误 发生系统故障时,需要将已经提交的事务重做发生系统故障时,需要将已经提交的事务重做(REDOREDO),将正在运行而未提交的事务撤销),将正在运行而未提交的事务撤销(UNDOUNDO)910.2 10.2 故障类型故障类型 v介质故障介质故障 存储数据的介质(如磁盘)产生的故障称为介存储数据的介质(如磁盘)产生的故障称为介质故障质故障 磁头碰撞磁头碰撞 磁盘磁道损坏磁盘磁道损坏 介质故障发生的可能性小,但破坏力极大介质故障发生的可能性小,但破坏力极大 介质故障的解

9、决措施是维护系统的备份,如将介质故障的解决措施是维护系统的备份,如将数据库系统拷贝在磁带或光盘等介质上,定期数据库系统拷贝在磁带或光盘等介质上,定期进行维护进行维护1010.2 10.2 故障类型故障类型 v计算机病毒计算机病毒 计算机病毒是一种人为的破坏,对计算机系统计算机病毒是一种人为的破坏,对计算机系统包括数据库造成极大的危害。包括数据库造成极大的危害。 计算机病毒可以侵入数据库,使数据由正确的计算机病毒可以侵入数据库,使数据由正确的变为错误的,还可以通过破坏计算机系统导致变为错误的,还可以通过破坏计算机系统导致系统故障,更严重的甚至破坏存储介质产生介系统故障,更严重的甚至破坏存储介质产

10、生介质故障。质故障。1110.3 10.3 基于日志的恢复技术基于日志的恢复技术v通过日志文件进行数据库恢复是另一种常通过日志文件进行数据库恢复是另一种常用的数据库恢复技术用的数据库恢复技术v为保证数据库是可恢复的,记录日志文件为保证数据库是可恢复的,记录日志文件必须遵循两条原则:必须遵循两条原则: 严格按照并发事务执行更新操作的时间次序记严格按照并发事务执行更新操作的时间次序记录日志文件;录日志文件; 必须先写日志文件,后写数据库更新。必须先写日志文件,后写数据库更新。1210.3 10.3 基于日志的恢复技术基于日志的恢复技术v日志的结构日志的结构 在数据库中,日志以文件的形式存在,是日志

11、在数据库中,日志以文件的形式存在,是日志记录的序列,记录对数据库的插入、删除、修记录的序列,记录对数据库的插入、删除、修改等操作。改等操作。 日志文件主要有两种格式日志文件主要有两种格式 以记录为单位的日志文件以记录为单位的日志文件 以数据块为单位的日志文件以数据块为单位的日志文件1310.3 10.3 基于日志的恢复技术基于日志的恢复技术v日志的结构日志的结构 不同数据库系统使用的日志文件具有不同的格不同数据库系统使用的日志文件具有不同的格式式 一个更新操作的日志记录形式为:一个更新操作的日志记录形式为:T T Ti i为事务标识,是执行更新操作事务唯一的标识符为事务标识,是执行更新操作事务

12、唯一的标识符 X X为事务为事务T Ti i要更新的数据项要更新的数据项x x1 1是旧值,即事务执行更新操作之前数据项是旧值,即事务执行更新操作之前数据项X X的取值,的取值,如果如果x x1 1在日志记录中为空,则该操作是插入操作在日志记录中为空,则该操作是插入操作x2x2是新值,即事务执行更新操作之后数据项是新值,即事务执行更新操作之后数据项X X的取值,的取值,如果如果x x2 2在日志记录中为空,则该操作是删除操作在日志记录中为空,则该操作是删除操作1410.3 10.3 基于日志的恢复技术基于日志的恢复技术v日志的结构日志的结构 【例例10.110.1】定义事务定义事务T T1 1

13、,改写数据项,改写数据项A A和和B B的值,的值,再定义事务再定义事务T T2 2,求数据项,求数据项A A、B B之和写入数据项之和写入数据项C C15T1: Read (A)Read (B)A = A+10B = B-20Write (A)Write (B)T2:Read (C)Read (A)Read (B)C = A+BWrite (C)10.3 10.3 基于日志的恢复技术基于日志的恢复技术v日志的结构日志的结构 【例例10.110.1】16假设数据库中,数据项假设数据库中,数据项A = 100A = 100,B = 200B = 200,数据库的更,数据库的更新日志应该包含如下内

14、容:新日志应该包含如下内容:T, startT, A, 100, 110T, B, 200, 180T, commitT, startT, 290/x x表示数据项表示数据项C C的旧值的旧值T, commit 该日志文件包含了事务该日志文件包含了事务T T1 1和和T T2 2对数据库的更新操作,对数据库的更新操作,事务事务T T1 1将数据项将数据项A A和和B B值进行了更新,事务值进行了更新,事务T T2 2将数据项将数据项C C的的值进行了更新。值进行了更新。10.3 10.3 基于日志的恢复技术基于日志的恢复技术v日志的结构日志的结构 利用日志,可以解决任何不造成磁盘上信息丢利用日

15、志,可以解决任何不造成磁盘上信息丢失的故障,如事务故障和系统故障。利用日志失的故障,如事务故障和系统故障。利用日志进行数据库恢复将使用两个恢复过程:进行数据库恢复将使用两个恢复过程:UndoUndo(撤销)和(撤销)和RedoRedo(重做)。(重做)。 Undo(TUndo(Ti i) ):将事务:将事务T Ti i所更新的所有数据项的值恢复所更新的所有数据项的值恢复为旧值为旧值; ; Redo(TRedo(Ti i) ):将事务:将事务T Ti i所更新的所有数据项的值设置所更新的所有数据项的值设置为新值。为新值。1710.3 10.3 基于日志的恢复技术基于日志的恢复技术v日志的结构日志

16、的结构 故障发生后,系统需要根据日志决定哪些事务故障发生后,系统需要根据日志决定哪些事务需要需要UndoUndo,哪些事务需要,哪些事务需要RedoRedo 故故障发生并且被排除后,如果日志记录了某事务未障发生并且被排除后,如果日志记录了某事务未提交(即该事务没有提交(即该事务没有commitcommit标记),执行标记),执行UndoUndo过程,过程,撤销该事务,系统恢复到该事务运行之前的状态撤销该事务,系统恢复到该事务运行之前的状态 如果日志记录了某事务已经提交(即该事务有如果日志记录了某事务已经提交(即该事务有commitcommit标记),执行标记),执行RedoRedo过程,重新运

17、行该事务过程,重新运行该事务 日志文件创建后,必须妥善保存,保证日志文日志文件创建后,必须妥善保存,保证日志文件不能丢失,否则,一旦出现故障,就无法利件不能丢失,否则,一旦出现故障,就无法利用日志文件进行数据库恢复用日志文件进行数据库恢复1810.3 10.3 基于日志的恢复技术基于日志的恢复技术v检查点检查点 使用日志对数据库进行恢复,必须搜索日志文使用日志对数据库进行恢复,必须搜索日志文件,确定哪些事务需要件,确定哪些事务需要UndoUndo,哪些事务需要,哪些事务需要RedoRedo。但是,搜索日志文件需要的时间很长,。但是,搜索日志文件需要的时间很长,而且事务一旦提交(而且事务一旦提交

18、(COMMITCOMMIT),可能已经对数),可能已经对数据库进行了大量的更新,再据库进行了大量的更新,再RedoRedo该事务同样会该事务同样会造成时间和空间上的不必要浪费。解决这样问造成时间和空间上的不必要浪费。解决这样问题的一种方法是对日志周期性地执行检查点题的一种方法是对日志周期性地执行检查点(checkpointcheckpoint)1910.3 10.3 基于日志的恢复技术基于日志的恢复技术v检查点检查点 检查点可以作为一类新的日志记录写在日志文检查点可以作为一类新的日志记录写在日志文件中,检查点记录的主要内容包括:件中,检查点记录的主要内容包括: 建立检查点时所有正在执行的事务;

19、建立检查点时所有正在执行的事务; 这些事务最近一个日志记录的地址这些事务最近一个日志记录的地址 检查点有两种建立机制检查点有两种建立机制 一种是静态检查点,即插入检查点时不允许所有事一种是静态检查点,即插入检查点时不允许所有事务对数据库进行更新操作务对数据库进行更新操作 另一种是动态检查点,即插入检查点时允许事务对另一种是动态检查点,即插入检查点时允许事务对数据库进行更新操作数据库进行更新操作2010.3 10.3 基于日志的恢复技术基于日志的恢复技术v检查点检查点 系统插入静态检查点时,需要进行如下工作:系统插入静态检查点时,需要进行如下工作: 将当前位于日志缓冲区的所有日志记录写入磁盘的将

20、当前位于日志缓冲区的所有日志记录写入磁盘的日志文件上;日志文件上; 将已经修改的数据记录写入磁盘的数据库中;将已经修改的数据记录写入磁盘的数据库中; 在日志文件中写入一个检查点记录,并写入磁盘。在日志文件中写入一个检查点记录,并写入磁盘。 系统可以定期或不定期地建立检查点。检查点系统可以定期或不定期地建立检查点。检查点可以根据预定的时间间隔建立,如每隔两个小可以根据预定的时间间隔建立,如每隔两个小时建立一个检查点;也可以根据某种规则建立时建立一个检查点;也可以根据某种规则建立检查点,如日志文件写满一半时建立一个检查检查点,如日志文件写满一半时建立一个检查点。点。2110.3 10.3 基于日志

21、的恢复技术基于日志的恢复技术v检查点检查点 使用检查点能够提高恢复效率。使用检查点能够提高恢复效率。 当事务当事务T Ti i在一个检查点之前提交,在一个检查点之前提交,T Ti i对数据库所做对数据库所做的修改在建立检查点之前就已经写入数据库,这样,的修改在建立检查点之前就已经写入数据库,这样,在进行数据库恢复时,没有必要对事务在进行数据库恢复时,没有必要对事务T Ti i执行执行RedoRedo操作。操作。2210.3 10.3 基于日志的恢复技术基于日志的恢复技术v检查点检查点 恢复策略恢复策略 当故障发生后,可以通过检查日志来确定在最近的当故障发生后,可以通过检查日志来确定在最近的检查

22、点建立前开始执行的最近的一个事务检查点建立前开始执行的最近的一个事务T Ti i。要找。要找到这个事务只需从日志的尾部由后至前搜索日志,到这个事务只需从日志的尾部由后至前搜索日志,直到找到第一个直到找到第一个记录(即日志文件中记录(即日志文件中的最后一个的最后一个),然后继续向前搜索直),然后继续向前搜索直至发现第一个至发现第一个T,start记录,事务记录,事务T Ti i就是检查点就是检查点建立之前开始运行的最后一个事务,只需对事务建立之前开始运行的最后一个事务,只需对事务T Ti i和事务和事务T Ti i后开始执行的所有事务执行后开始执行的所有事务执行redoredo和和undound

23、o操操作,即可实现数据库恢复。作,即可实现数据库恢复。2310.3 10.3 基于日志的恢复技术基于日志的恢复技术v检查点检查点 恢复策略恢复策略 事务事务T Ti i以及其后开始执行的事务构成一个事务集合以及其后开始执行的事务构成一个事务集合TT,对于对于TT中的事务中的事务T Tk k ,如果日志文件中包含,如果日志文件中包含 commit,则对,则对T Tk k执行执行RedoRedo操作,否则,对操作,否则,对T Tk k执行执行UndoUndo操作操作2410.3 10.3 基于日志的恢复技术基于日志的恢复技术v检查点检查点 【例例10.210.2】在如下日志文件中,如果检查点设在如

24、下日志文件中,如果检查点设置在置在T, commit之前,出现故障并排除后,之前,出现故障并排除后,由于事务由于事务T1T1在检查点之前已经提交,因此不必在检查点之前已经提交,因此不必执行任何操作;事务执行任何操作;事务T T2 2在检查点之后、故障发在检查点之后、故障发生前提交,需要进行生前提交,需要进行RedoRedo操作实现数据库的恢操作实现数据库的恢复;而事务复;而事务T T3 3在发生故障时没有提交,因此执在发生故障时没有提交,因此执行行UndoUndo操作。操作。2510.3 10.3 基于日志的恢复技术基于日志的恢复技术26/x表示数据项表示数据项C的旧值的旧值发生故障发生故障1

25、0.3 10.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 基于日志的恢复是在故障发生并排除后,数据基于日志的恢复是在故障发生并排除后,数据库系统重新启动,利用日志文件的事务记录对库系统重新启动,利用日志文件的事务记录对数据库进行操作,将数据库恢复到故障发生之数据库进行操作,将数据库恢复到故障发生之前的某个正确状态的过程前的某个正确状态的过程2710.3 10.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 延迟更新技术延迟更新技术 延迟更新是指在日志文件中记录所有对数据库的更延迟更新是指在日志文件中记录所有对数据库的更新操作,在事务提交时,一

26、次性地执行全部更新操新操作,在事务提交时,一次性地执行全部更新操作。所谓的作。所谓的“延迟延迟”是指实际的更新操作比在日志是指实际的更新操作比在日志中记录这些操作,从时间上看要延迟到事务提交时中记录这些操作,从时间上看要延迟到事务提交时 延迟更新技术要求每个事务提交之前不能对数据库延迟更新技术要求每个事务提交之前不能对数据库进行更新,只能在日志中记录对数据库的更新操作,进行更新,只能在日志中记录对数据库的更新操作,而且在一个事务对数据库进行的更新操作没有完全而且在一个事务对数据库进行的更新操作没有完全写入日志文件的情况下,不能够提交事务。写入日志文件的情况下,不能够提交事务。2810.3 10

27、.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 延迟更新技术延迟更新技术 延迟更新技术保证了在对数据库中数据进行实际更延迟更新技术保证了在对数据库中数据进行实际更新(即实际对数据库执行写操作)时,事务已经正新(即实际对数据库执行写操作)时,事务已经正确提交,这样,如果在对数据库进行更新时发生故确提交,这样,如果在对数据库进行更新时发生故障,由于事务已经提交,只需对事务进行障,由于事务已经提交,只需对事务进行RedoRedo操作操作即可实现恢复。如果在一个事务提交之前,出现故即可实现恢复。如果在一个事务提交之前,出现故障,由于没有对数据库执行实际的更新操作,数据障,由于

28、没有对数据库执行实际的更新操作,数据库中数据项的值仍然是旧值,因此只需将日志中关库中数据项的值仍然是旧值,因此只需将日志中关于这个事务的记录删除即可。于这个事务的记录删除即可。2910.3 10.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 延迟更新技术延迟更新技术 例例10.210.2中的日志文件,记录了对数据项中的日志文件,记录了对数据项A A、B B、C C的的更新,表更新,表10.110.1显示采用延迟更新技术时,在不同时显示采用延迟更新技术时,在不同时刻发生故障后的恢复方法。刻发生故障后的恢复方法。30日志文件数据库故障解决方法(系统重启后)write (A

29、)write (B)write (C)故障故障故障故障T1未提交,删除日志中T1的信息 T1已经提交,Redo事务T1T1已经提交, Redo事务T1;T2未提交,删除日志中T2的信息T1、T2都已经提交,Redo事务T1和T2表表10.1 10.1 采用延迟更新技术不同时刻发生故障的恢复方法采用延迟更新技术不同时刻发生故障的恢复方法10.3 10.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 即时更新技术即时更新技术 即时更新是指对数据库的更新操作在事务提交之前即时更新是指对数据库的更新操作在事务提交之前就写入数据库中,未提交的事务仍然处于运行状态,就写入数据库中,

30、未提交的事务仍然处于运行状态,处于运行状态的事务直接对数据库进行更新。处于运行状态的事务直接对数据库进行更新。 即时更新技术要求事务对数据库所有的更新操作安即时更新技术要求事务对数据库所有的更新操作安全地记录在日志文件之前,该事务既不能够对实际全地记录在日志文件之前,该事务既不能够对实际的数据库进行更新也不能够提交。的数据库进行更新也不能够提交。3110.3 10.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 即时更新技术即时更新技术 采用即时更新技术,日志文件会即时记录事务对数采用即时更新技术,日志文件会即时记录事务对数据库进行的更新操作,一旦出现故障,可以根据日据

31、库进行的更新操作,一旦出现故障,可以根据日志中的更新记录将已提交事务的相关数据项设置为志中的更新记录将已提交事务的相关数据项设置为新值,即执行新值,即执行RedoRedo操作,将未提交事务的相关数据操作,将未提交事务的相关数据项恢复为原来的旧值,即执行项恢复为原来的旧值,即执行UndoUndo操作,并从日志操作,并从日志文件中删除该事务的信息。文件中删除该事务的信息。3210.3 10.3 基于日志的恢复技术基于日志的恢复技术v基于日志的恢复基于日志的恢复 即时更新技术即时更新技术 例例10.210.2中的日志文件,记录了对数据项中的日志文件,记录了对数据项A A、B B、C C的的更新,表更

32、新,表10.210.2显示采用即时更新技术时,在不同时显示采用即时更新技术时,在不同时刻发生故障后的恢复方法。刻发生故障后的恢复方法。33日志文件数据库故障解决方法(系统重启后)write (A)write (B)write (C)故障故障故障故障事务T1没有提交,删除日志中T1的信息并Undo事务T1T1已经提交,Redo事务T1T1已经提交,Redo事务T1;T2未提交,删除日志中T2的信息并Undo事务T2T1、T2都已经提交,Redo事务T1和T2表表10.2 10.2 采用延迟更新技术不同时刻发生故障的恢复方法采用延迟更新技术不同时刻发生故障的恢复方法10.4 10.4 备份与恢复备

33、份与恢复v另一种数据库恢复技术是利用数据库备份另一种数据库恢复技术是利用数据库备份进行恢复。基于备份的恢复技术是利用在进行恢复。基于备份的恢复技术是利用在其它存储设备上建立的数据库副本进行数其它存储设备上建立的数据库副本进行数据恢复的技术。建立副本也称为数据转储,据恢复的技术。建立副本也称为数据转储,是将数据库复制到其它存储设备(如磁带、是将数据库复制到其它存储设备(如磁带、磁盘或光盘等)上进行保存的过程。磁盘或光盘等)上进行保存的过程。3410.4 10.4 备份与恢复备份与恢复v如果当数据库处于某个状态如果当数据库处于某个状态S S的时候进行了的时候进行了数据转储,当数据库发生故障时,利用

34、转数据转储,当数据库发生故障时,利用转储的副本将数据库进行恢复到进行数据转储的副本将数据库进行恢复到进行数据转储时的状态储时的状态S S。但是,进行数据转储后到发。但是,进行数据转储后到发生故障这段时间内运行的事务无法进行恢生故障这段时间内运行的事务无法进行恢复,因此,要想恢复到故障发生时的数据复,因此,要想恢复到故障发生时的数据库系统状态,必须根据日志文件重新运行库系统状态,必须根据日志文件重新运行(RedoRedo)这段时间内的事务。)这段时间内的事务。3510.4 10.4 备份与恢复备份与恢复v随着数据库规模的增大,进行数据转储需随着数据库规模的增大,进行数据转储需要的时间也会变长,因

35、此不能频繁地进行要的时间也会变长,因此不能频繁地进行数据转储,而是应该周期性的进行。数据转储,而是应该周期性的进行。v根据转储数据的规模,可分为完全转储和根据转储数据的规模,可分为完全转储和增量转储。增量转储。 完全转储是将全部数据库复制到其它存储介质,完全转储是将全部数据库复制到其它存储介质,作为数据库的副本保存。作为数据库的副本保存。 增量转储是转储上一次转储后更新过的数据,增量转储是转储上一次转储后更新过的数据,而对于上次转储过的,没有改变的数据不进行而对于上次转储过的,没有改变的数据不进行重复的转储。重复的转储。3610.4 10.4 备份与恢复备份与恢复v根据转储的方式可以分为静态转

36、储和动态根据转储的方式可以分为静态转储和动态转储。转储。 静态转储是在数据库系统中无事务运行时进行静态转储是在数据库系统中无事务运行时进行的转储操作。的转储操作。 动态转储是指在转储的同时允许对数据库进行动态转储是指在转储的同时允许对数据库进行存取或修改。存取或修改。3710.4 10.4 备份与恢复备份与恢复v在静态转储方式中,也可以建立日志文件。在静态转储方式中,也可以建立日志文件。当数据库毁坏后可重新装入数据库副本把当数据库毁坏后可重新装入数据库副本把数据库恢复到转储结束时刻的正确状态,数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已提交的事务进行然后利用日志文件,把已提交的事

37、务进行RedoRedo处理,对故障发生时尚未提交的事务处理,对故障发生时尚未提交的事务进行进行UndoUndo处理。这样不必重新运行那些已处理。这样不必重新运行那些已完成的事务就可以把数据库恢复到故障前完成的事务就可以把数据库恢复到故障前某一时刻的正确状态。某一时刻的正确状态。3810.5 10.5 故障恢复策略故障恢复策略v日志文件与数据转储是两种重要的数据库日志文件与数据转储是两种重要的数据库恢复方式,能够对系统运行过程中发生的恢复方式,能够对系统运行过程中发生的事务故障、系统故障以及介质故障进行恢事务故障、系统故障以及介质故障进行恢复,将数据库恢复到故障发生前的某个正复,将数据库恢复到故

38、障发生前的某个正确状态。不同故障的恢复策略和方法也不确状态。不同故障的恢复策略和方法也不相同相同3910.5 10.5 故障恢复策略故障恢复策略v事务故障的恢复事务故障的恢复 事务运行至正常结束之前被中止,则出现事务事务运行至正常结束之前被中止,则出现事务故障。一旦出现事务故障,系统将根据日志文故障。一旦出现事务故障,系统将根据日志文件对出现故障的事务进行件对出现故障的事务进行UndoUndo操作,撤销该事操作,撤销该事务对数据库已经进行的修改。务对数据库已经进行的修改。4010.5 10.5 故障恢复策略故障恢复策略v事务故障的恢复事务故障的恢复 事务故障的恢复步骤为事务故障的恢复步骤为 由

39、后向前扫描日志文件,查找出现故障事务对数据由后向前扫描日志文件,查找出现故障事务对数据进行的更新操作;进行的更新操作; 为每个更新操作执行其逆操作,即将更新前的旧值为每个更新操作执行其逆操作,即将更新前的旧值重新写入数据库。如果记录是插入操作,则相当于重新写入数据库。如果记录是插入操作,则相当于做删除操作;若记录是删除操作,则做插入操作;做删除操作;若记录是删除操作,则做插入操作;若是修改操作,则相当于用修改前的旧值代替修改若是修改操作,则相当于用修改前的旧值代替修改后的新值;后的新值; 继续扫描日志文件,对该事务的每个更新操作进行继续扫描日志文件,对该事务的每个更新操作进行恢复,直到故障事务

40、开始标记为止,完成事务故障恢复,直到故障事务开始标记为止,完成事务故障的恢复的恢复4110.5 10.5 故障恢复策略故障恢复策略v系统故障的恢复系统故障的恢复 发生系统故障时,未完成的事务对数据库的部发生系统故障时,未完成的事务对数据库的部分更新可能已经完成并写入数据库,已完成的分更新可能已经完成并写入数据库,已完成的事务对数据库的更新可能留在缓冲区中还没有事务对数据库的更新可能留在缓冲区中还没有写入数据库,这时需要对这两类事务进行处理写入数据库,这时需要对这两类事务进行处理4210.5 10.5 故障恢复策略故障恢复策略v系统故障的恢复系统故障的恢复 系统故障的恢复步骤系统故障的恢复步骤

41、从前向后扫描日志文件,找出故障发生前已经完成从前向后扫描日志文件,找出故障发生前已经完成的事务(在日志文件中既有事务开始记录,也有事的事务(在日志文件中既有事务开始记录,也有事务结束记录),将其事务标识记入务结束记录),将其事务标识记入RedoRedo队列。同时队列。同时找出故障发生时尚未完成的事务(在日志文件中只找出故障发生时尚未完成的事务(在日志文件中只有事务开始记录,没有事务结束记录),将其事务有事务开始记录,没有事务结束记录),将其事务标识记入标识记入UndoUndo队列;队列; 对于对于RedoRedo队列中的事务进行重做,方法是重新执行队列中的事务进行重做,方法是重新执行日志文件中

42、登记的日志文件中登记的RedoRedo事务的操作;事务的操作; 对于对于UndoUndo队列中的事务进行撤销,方法是从后向前队列中的事务进行撤销,方法是从后向前扫描日志文件中每个扫描日志文件中每个UndoUndo事务的操作,执行其逆操事务的操作,执行其逆操作。作。4310.5 10.5 故障恢复策略故障恢复策略v系统故障的恢复系统故障的恢复 介质故障的恢复介质故障的恢复 发生介质故障后,磁盘上的数据以及日志文件都会发生介质故障后,磁盘上的数据以及日志文件都会遭到破坏,恢复时,既要重新安装数据库,又要重遭到破坏,恢复时,既要重新安装数据库,又要重做已完成的事务,具体步骤是:做已完成的事务,具体步

43、骤是: 装入最新的数据库副本,即距故障发生时刻最近的装入最新的数据库副本,即距故障发生时刻最近的转储副本,使数据库恢复到最近一次转储时的一致转储副本,使数据库恢复到最近一次转储时的一致性状态。对于动态转储的数据库副本,还需同时装性状态。对于动态转储的数据库副本,还需同时装入转储开始时刻的日志文件副本,利用系统故障的入转储开始时刻的日志文件副本,利用系统故障的恢复方法,将数据库恢复到一致性状态;恢复方法,将数据库恢复到一致性状态; 装入相应的日志文件副本(转储结束时刻的日志文装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。件副本),重做已完成的事务。 这样就可以将数据库恢

44、复至故障发生前某一时刻的这样就可以将数据库恢复至故障发生前某一时刻的一致性状态一致性状态44本章小结本章小结v本章介绍了事务故障、系统故障和介质故本章介绍了事务故障、系统故障和介质故障以及出现这些故障时,数据库系统的常障以及出现这些故障时,数据库系统的常用恢复技术。常用的数据库恢复技术是基用恢复技术。常用的数据库恢复技术是基于数据库副本的恢复技术和基于日志的恢于数据库副本的恢复技术和基于日志的恢复技术。对于事务故障、系统故障可以根复技术。对于事务故障、系统故障可以根据日志文件,决定哪些事务需要据日志文件,决定哪些事务需要RedoRedo,哪,哪些事务需要些事务需要UndoUndo,进而根据不同

45、的操作进,进而根据不同的操作进行恢复;介质故障通常同时使用数据转储行恢复;介质故障通常同时使用数据转储得到的数据库副本和记录数据库更新操作得到的数据库副本和记录数据库更新操作的日志文件进行恢复。的日志文件进行恢复。45本章小结本章小结v在基于日志恢复数据库时,引入了检查点在基于日志恢复数据库时,引入了检查点的概念,恢复时,没有必要扫描整个日志的概念,恢复时,没有必要扫描整个日志文件而只需执行检查点即可得到需要恢复文件而只需执行检查点即可得到需要恢复的事务。的事务。46思考与练习题思考与练习题一、一、选择题选择题1.1.若若系统在运行过程中,由于某种硬件故障,使存储在外存系统在运行过程中,由于某

46、种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为(上的数据部分损失或全部损失,这种情况称为( )。)。 A A. . 介质故障介质故障B B. . 运行故障运行故障 C C. . 系统故障系统故障 D. D. 事务故障事务故障2.2.在在DBMSDBMS中实现事务持久性的子系统是(中实现事务持久性的子系统是( )。)。 A A. . 安全管理子系统安全管理子系统 B B. . 完整性管理子系统完整性管理子系统 C C. . 并发控制子系统并发控制子系统 D. D. 恢复管理子系统恢复管理子系统3.3.后援后援副本的作用是(副本的作用是( )。)。 A A. . 保障安全性保障安

47、全性 B B. . 一致性控制一致性控制 C C. . 故障后的恢复故障后的恢复 D D. . 数据的转储数据的转储47思考与练习题思考与练习题4.4.事务事务日志用于保存(日志用于保存( )。)。 A A. . 程序运行过程程序运行过程 B B. . 程序的执行程序的执行结果结果 C C. . 对数据的更新操作对数据的更新操作D. D. 数据操作数据操作5.5.数据库数据库恢复的基础是利用转储的冗余数据。这些转储的冗恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括(余数据包括( )。)。 A A. . 数据字典、应用程序、审计档案、数据库后备副本数据字典、应用程序、审计档案、数据库后备副本 B B. . 数据字典、应用程序、审计档案、日志文件数据字典、应用程序、审计档案、日志文件 C C. . 日志文件、数据库后备副本日志文件、数据库后备副本 D D. . 数据字典、应用程序、数据库后备副本数据字典、应用程序、数据库后备副本48思考与练习题思考与练习题二、二、填空填空题题1.1.数据数据恢复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论