10第十章数 据库 恢复课件

上传人:w****i 文档编号:92579761 上传时间:2019-07-11 格式:PPT 页数:53 大小:395.50KB
返回 下载 相关 举报
10第十章数 据库 恢复课件_第1页
第1页 / 共53页
10第十章数 据库 恢复课件_第2页
第2页 / 共53页
10第十章数 据库 恢复课件_第3页
第3页 / 共53页
10第十章数 据库 恢复课件_第4页
第4页 / 共53页
10第十章数 据库 恢复课件_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《10第十章数 据库 恢复课件》由会员分享,可在线阅读,更多相关《10第十章数 据库 恢复课件(53页珍藏版)》请在金锄头文库上搜索。

1、第十章 数据库恢复,主要内容:,掌握数据库恢复概念、实现技术; 掌握故障的种类及恢复策略。,10.1数据库恢复技术 10.1.1数据库恢复概述,一、数据库恢复的必要性 数据库系统的数据库恢复机制的目的: ()保证事务的原子性 ()发生故障后,数据库能恢复到正确状态。 故障类型 (重点) 计算机系统故障 事务故障 介质故障 其他原因(意外情况),衡量系统优劣的重要指标!,故障的影响 运行事务非正常中断 破坏数据库 ()非永久存储器:如主存、缓存等。 特点:存取速度快 故障:不可恢复 ()永久存储器:如磁盘、散存等。 特点:存取速度较慢 故障:可恢复 ()永恒存储器 (理论上永远不会丢失信息。),

2、故障可恢复性,10.1.2数据库恢复实现技术,一、恢复技术中的重要文件:日志文件(重点) 日志文件:用来记录事务对数据库的操作信息的文件。 日志文件的格式: (1)以记录为单位的日志文件。 (2)以数据块为单位的日志文件。 为保证事务的原子性,在执行一个数据库更新操作规程时,可以首先把描述更新操作的信息写入日志文件,而不修改数据库本身。当事务提交时,再使用日志中更新操作信息实现数据库的更新。,日志使用机制:,1、常用的一些日志记录格式 T :事务名,执行WRITE(Q)操作的事务。 X:数据项名,Q的唯一名字。 V1:原始值,Q在执行WRITE(Q)之前的值。 V2:新值,Q在执行WRITE(

3、Q)之后的值。 (1):事务T已经开始。 (2):事务T在数据项X上执行的写操作。X在执行写操作之前的值为V1,执行写操作之后的值为V2。 (3):事务T已经提交。 注:为保证日志在系统和磁盘发生故障时仍可使用,必须将它存储在永恒存储器上。,二、恢复技术(重点) 1、推迟更新技术(重点) 该事务对数据库的所有更新操作记录在日志中,把所有数据库更新操作推迟到该事务提交时执行。 推迟更新协议: (1)每个事务在到达提交点之前不能更新数据库。 (2)在一个事务的所有更新操作对应的日志记录写入永恒存储器之前,该事务不能到达提交点。 注:一事务到达提交时,称该事务进入部分提交状态。,推迟技术执行事务T的

4、过程: (1)T开始执行,记录; (2)T发出WRITE(X)操作,记录; (3)T达部分提交状态时,记录,并将日志中形如 的记录,把数据库中数据项X更新为新值V2。 (4)数据库真正的被事务T更新,T进入提交状态。,由于推迟更新技术仅需新值,所以可以简化日志结构为。 实例:银行数据库系统中: 事务T1:从账号A向账号B转储50元; 事务T2:从账号C支出100元。两事务分别定义如下: T1:READ(A); T2:READ(C); A:=A-50; C:=C-100; WRITE(A); WRITE(C); READ(B); B:=B+50; WRITE(B);,返回,设A,B和C的初值分别

5、是1000元、2000元和700元。且T1与T2按串行调度 日志中所包含的有关T1、T2的信息如下: 说明: 数据库中A、B值仅有在写入日志后才能被更改。 数据库中C值仅有在写入日志后才能被更改。,日志与数据库变化过程实例: 日志记录 数据库 A=950 B=2050 C=60,针对推迟更新技术DBMS所采用的恢复机制:(故障发生后,确定需要重做的事务T) REDO(T): FOR日志中每个形如(T,X,V)的记录DO 把数据库中数据项X的值改为V; END FOR 注:REDO操作必须是幂等的,即执行多次和执行一次的效果相同。,故障实例1:设故障恰好发生在T1的WRITE(B)操作信息被写入

6、日志之后。(重点) 日志内容如下: T1 T2 数据库中A、B值未改变。 数据库恢复机制:不采取任何恢复行动。 结果:A=1000,B=2000,C=700。,故障实例2:设故障恰好发生在T2的WRITE(C)操作之后。(重点) 日志内容如下: T1 T2 数据库中A、B值已改变,C值未改变。 数据库恢复机制:需要执行REDO(T1)。 结果:A=950,B=2050,C=700。,故障实例3:设故障恰好发生在之后。(重点) 日志内容如下: T1 T2 数据库中A、B、C值已改变。 数据库恢复机制:需要执行REDO(T1),REDO(T2)。 结果:A=950,B=2050,C=600。,2、

7、即时更新技术(重点) 非提交更新:处于活动状态的事务直接在数据库上实施的更新。 即时更新协议: (1)在所有型日志记录安全地存储到永恒存储器之前,事务T不能更新数据库。 (2)在所有型日志记录安全地存储到永恒存储器之前,不允许事务T提交。,即时更新技术运行事务T的过程: (1)T开始执行时,记录。 (2)T发出WRITE(X)操作,在日志中记录,再直接在数据库上执行WRITE(X)。 (3)T达部分提交状态时,记录。 (4)数据库真正的被事务T更新,T进入提交状态。,T1和T2同前实例。 日志中所包含的有关T1、T2的信息如下: ,日志与数据库变化过程实例: 日志记录 数据库 A=950 B=

8、2050 C=60 ,针对即时更新技术DBMS所采用的恢复机制: UNDO(T): FOR日志中每个形如(T,X,V1,V2)的记录DO 把数据库中数据项X的值改为V1; END FOR,REDO(T): FOR日志中每个形如(T,X,V1,V2)的记录DO 把数据库中数据项X的值改为V2; END FOR 注:UNDO、REDO操作必须是幂等的,即执行多次和执行一次的效果相同。,数据库恢复过程: (1)从后向前扫描日志记录,建立两个事务表: 提交事务表:含日志中有的所有事务Ti。 未提交事务表:含日志中具有,但不具有的所有事务Ti。 (2)对提交事务表中的每个事务执行READO(T)。 (3

9、)对未提交事务表中的每个事务执行UNDO(T),从日志删除T信息。,故障实例1:设故障恰好发生在T1的WRITE(B)操作信息被写入日志之后。 日志内容如下: T1 数据库中A、B值已改变。 数据库恢复机制:因为T1未真正提交,所以 UNDO(T1),A、B被恢复A=1000,B=2000。,故障实例2:设故障恰好发生在T2的WRITE(C)操作写入日志之后。 日志内容如下: T1 T2 数据库中A、B 、C值已改变。 数据库恢复机制:因为T1已提交、T2未提交,要执行UNDO(T2)、REDO(T1)。结果:A=950,B=2050,C=700。注:UNDO(T2)须先执行。,故障实例3:设

10、故障恰好发生在之后。 日志内容如下: T1 T2 数据库中A、B、C值已改变。 数据库恢复机制:因为T1、T2都已提交,需要执行REDO(T1),REDO(T2)。 结果:A=950,B=2050,C=600。,3、其它恢复技术及辅助技术: 1缓冲技术(辅助作用) (1)日志缓冲技术 目的:成批地向永恒存储器输出日志记录,减少I/O操作,提高效率。 (2)数据库缓冲技术 2检测点技术(辅助作用)(重点) 原数据库恢复技术存在问题: (1)搜索日志耗时长。 (2)重复执行了已成功的REDO操作。,解决办法:增加检测点法 在日志中增加一类新记录: ,数据库恢复机制定期执行如下操作,建立检测点: 1

11、)将当前缓存中所有日志记录输出到永恒存储器 2)将所有缓冲区中被修改的数据块写入磁盘 3)将日志记录写入永恒存储器 使用检测点法对数据库恢复技术的改进: 在之前的事务都已经提交,仅需对最近建立的检测点之后开始执行或处于活动状态的事务进REDO或UNDO操作。,利用数据库备份恢复,利用日志备份恢复,备份即时点,某事务即时点 故障即时点,备份恢复示意图:,10.2 SQL SERVER备份恢复技术,10.2.1 数据库备份 SQL SERVER提供四种备份数据库的方法: 备份全部数据库 差异备份数据库 备份事务日志 备份数据库文件(或文件组),一、备份全部数据库,BACKUP DATABASE d

12、atabase_name | database_name_var TO ,.n WITH DIFFERENTIAL , FORMAT | NOFORMAT , INIT | NOINIT , NOSKIP | SKIP , NOUNLOAD | UNLOAD ,例:备份整个 MyNwind 数据库 下例将整个 MyNwind 数据库备份到磁带上: USE MyNwind BACKUP DATABASE MyNwind TO TAPE = .Tape0 WITH FORMAT, NAME = Full Backup of MyNwind 下例创建用于存放 MyNwind 数据库完整备份的逻辑备份

13、设备。 USE master EXEC sp_addumpdevice disk, MyNwind_1, DISK =c:Program FilesMicrosoft SQL ServerMSSQLBACKUPMyNwind_1.dat 下例将MyNwind数据库备份到MyNwind_1 BACKUP DATABASE MyNwind TO MyNwind_1,企业管理器备份数据库,二、差异备份数据库,差异数据库备份只记录自上次数据库备份后发生更改的数据。差异数据库备份比数据库备份小而且备份速度快,因此可以更经常地备份,经常备份将减少丢失数据的危险。 使用差异数据库备份将数据库还原到差异数据库

14、备份完成时的那一点。若要恢复到精确的故障点,必须使用事务日志备份。 在下列情况下,可考虑使用差异数据库备份: 自上次数据库备份后数据库中只有相对较少的数据发生了更改。如果多次修改相同的数据,则差异数据库备份尤其有效。 使用的是简单恢复模型,希望进行更频繁的备份,但不希望进行频繁的完整数据库备份。 使用的是完全恢复模型或大容量日志记录恢复模型,希望需要最少的时间在还原数据库时前滚事务日志备份。,建议在执行差异数据库备份时使用如下过程: 创建定期的数据库备份。 在每个数据库备份之间定期创建差异数据库备份(例如,对于高度活动的系统,每隔四小时或四小时以上备份一次)。 如果使用完全恢复模型或大容量日志

15、记录恢复模型,则创建事务日志备份的频率比差异数据库备份大,如每隔 30 分钟。,还原差异数据库备份的顺序为: 还原最新的数据库备份。 还原最后一次的差异数据库备份。 如果使用完全恢复或大容量日志记录恢复,则应用自上次创建差异数据库备份后创建的所有事务日志备份。,示例,下例为 MyNwind 数据库创建一个完整的数据库备份和一个差异数据库备份。 BACKUP DATABASE MyNwind TO MyNwind_1 WITH INIT - 过了一些时间,数据库内容发生了一些变化 BACKUP DATABASE MyNwind TO MyNwind_1 WITH DIFFERENTIAL,三、事务日志备份,事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录。可以使用事务日志备份将数据库恢复到特定的即时点(如输入多余数据前的那一点)或恢复到故障点。 还原事务日志备份时,SQL Server 前滚事务日志中记录的所有更改。当 SQL Server 到达事务日志的最后时,已重新创建了与开始执行备份操作的那一刻完全相同的数据库状态。如果数据库已经恢复,则 SQL Server 将回滚备份操作开始时尚未完成的所有事务。 一般情况下,事务日志备份比数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号