第10章数据库恢复技术

上传人:今*** 文档编号:107421327 上传时间:2019-10-19 格式:PPT 页数:23 大小:182KB
返回 下载 相关 举报
第10章数据库恢复技术_第1页
第1页 / 共23页
第10章数据库恢复技术_第2页
第2页 / 共23页
第10章数据库恢复技术_第3页
第3页 / 共23页
第10章数据库恢复技术_第4页
第4页 / 共23页
第10章数据库恢复技术_第5页
第5页 / 共23页
点击查看更多>>
资源描述

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

1、数据库原理及应用 Principle and Application of Database 第十章 数据库恢复技术,学习目标,掌握事务的概念和性质 理解数据库故障的种类 掌握数据库恢复的技术和策略 掌握具有检查点的恢复技术 了解数据库镜像 了解SQL Server恢复技术,10.1 事务的基本概念,事务的概念:用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。如从A帐户转帐到B帐户100元的过程是一个事务,它包括两个更新操作:A=A-100,B=B+100,它们要么全做,要么全不做。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。事

2、务不同于程序,一个程序通常包含多个事务。 事务的开始与结束可以由用户显式控制,如果没有显式地定义事务,则由DBMS按缺省规定自动地划分事务。显式定义为: Begin TransctionCommit(或RollBack) 其中, Begin Transction表示事务开始, Commit为事务提交,即告诉事务管理器事务中的所有操作都已完成,数据库处于另一个一致性状态;而RollBack为事务回滚,即告诉事务管理器事务执行时发生故障,所有已完成操作必须全部撤销,滚回到事务开始的状态。这里的操作指对数据库的更新操作。,事务的特性:事务具有ACID特性。 原子性(Atomicity):事务是数据库

3、的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 一致性(Consistency):事务执行的结果必须保证数据库从一个一致性状态转到另一个一致性状态。 隔离性(Isolation):一个事务的执行不能被其他事务干扰,并发执行的各个事务间应互相独立。 持久性(Durability):事务一旦提交,它对数据库中数据的改变应是永久的。 事务ACID特性可能遭到破坏的因素有: 多个事务并行运行时,不同事务的操作交叉执行。 事务在运行过程中被强行停止。,10.2 数据库恢复概述,由于计算机系统中硬件故障、软件错误、操作员失误以及恶意破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库

4、的正确性,重则破坏数据库,使数据库全部或部分数据丢失。DBMS必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称一致状态)的功能,这就是数据库的恢复。恢复子系统是DBMS的一个重要组成部分,恢复技术是衡量系统性能优劣的重要指标。,10.3 故障的种类,事务故障:某个事务在运行过程中由于种种原因未运行至正常结束点就夭折了,造成数据库可能处于不正确状态。引起事务故障的原因有:运算溢出、并发事务发生死锁、违反了某些完整性限制等。事务故障有的是可预期的,有的是不可预期的。 系统故障(软故障):指造成系统停止运行的任何事件,使得系统要重新启动。这时主存内容尤其是数据库缓冲区中的内容丢失,所有运行事

5、务都异常终止。引起系统故障的原因有:特定类型的硬件错误如CPU故障、操作系统故障、DBMS代码错误、系统断电等。 介质故障(硬故障):使存储在外存中的数据部分丢失或全部丢失。介质故障发生的可能性较小,但破坏性大,破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。引起介质故障的原因有:磁盘损坏、磁头碰撞、瞬时强磁场干扰等。 计算机病毒:一种人为的故障或破坏,需检查、诊断和消灭。,10.4 恢复的实现技术,恢复机制涉及的两个关键问题:如何建立冗余数据(数据转储、登录日志文件)、 如何利用这些冗余数据实施数据库恢复。 数据转储:指DBA定期地将整个数据库复制到磁带或另一磁盘上保存起来的过程

6、。这些备用的数据文本称为后备副本或后援副本。,故障发生点 转储 运行事务 正常运行 Ta Tb Tf 重装后备副本 重新运行事务 恢 复 ,转储的分类 静态转储:系统中无运行事务时进行转储,即转储开始时数据库处于一致性状态,而转储期间不允许对数据库的任何存取、修改操作。优点是实现简单;缺点是转储必须等用户事务结束,新的事务必须等转储结束,降低了数据库的可用性。 动态转储:转储期间允许对数据库进行存取或修改,即转储操作与用户事务可以并发进行。优点是不用等待正在运行的用户事务结束,不会影响新事务的运行;缺点是不能保证副本中的数据正确有效,如转储期间的某个时刻Tc系统将数据A=100转储,而在下一时

7、刻Td某一事务将A改为200,转储结束后,后备副本上A的值已经过时。 为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件,利用后备副本加上日志文件就能把数据库恢复到某一时刻的正确状态。,海量转储:转储全部数据。 增量转储:每次只转储自上一次转储后更新过的数据。 数据转储小结,登记日志文件:日志文件是用来记录事务对数据库更新操作的文件。日志文件分以记录为单位和以数据块为单位两种格式。 日志文件的内容:每个事务的开始标记、结束标记和每个更新操作均可作为日志文件中的一条日志记录。 基于记录的每条日志记录内容:事务标识、操作类型(增删改)、操作对象、更新前数据的旧值、更新后数据的新值。

8、 基于数据块的每条日志记录内容:事务标识、被更新数据块。,T1 Read(A) A=A-100 Write(A) Read(B) B=B+100 Write(B),事务,日志文件,日志文件的作用 事务故障恢复和系统故障恢复必须用日志文件。 在动态转储方式中必须建立日志文件,与后备副本综合恢复。 在静态转储方式中也可以建立日志文件。当数据库毁坏后可重新装入后备副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。,登记日志文件:为保证数据库可恢复,登记日志文件时必须遵循两条原则: 登记的次序严格按照并行事务执行的时间次序。

9、 必须先写日志文件,后写数据库。 把对数据的修改写到数据库和把表示这个修改的日志记录写到日志文件是两个不同的操作。有可能在这两个操作之间发生了故障,即两个写操作只完成了一个。若先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改;若先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。,10.5 恢复策略,事务故障的恢复:事务故障指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复由系统自动完成,对用户是透明的。恢复步骤是: 反向扫描文件日志(即从

10、最后向前扫描日志文件),查找该事务的更新操作。 对该事务的更新操作执行逆操作。 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。,系统故障的恢复:系统故障造成数据库不一致状态的原因有两个,一是未完成事务对数据库的更新已写入数据库,二是一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库。因此恢复操作要UNDO故障发生时未完成的事务,REDO已完成的事务。系统故障的恢复由系统在重新启动时自动完成,不需要用户干预。恢复步骤是: 正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(既有Begin

11、Transaction记录,又有Commit记录),将其事务标识放入REDO队列;并找出故障发生时尚未完成的事务(无Commit记录),将其事务标识放入UNDO队列。 反向扫描日志文件,对UNDO队列中各个事务进行撤销处理。 正向扫描日志文件,对REDO队列中各个事务进行重做处理。 注意:必须先UNDO再REDO,示例:,设事务T1在A中存100,执行更新后在提交之前被中止;事务T2在A中存200,并提交。 介质故障的恢复:发生介质故障后,磁盘上的物理数据和日志文件被破坏,这是最严重的一种故障。恢复方法是重装数据,然后重做已完成的事务。具体步骤是:,发生故障时的日志 ,T1要UNDO,T2要R

12、EDO 如果先REDO,则A1200;然后UNDO,A1000。结果不正确 如果先UNDO,A1000;然后REDO,A1200。结果正确,装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。对于静态转储的数据库副本,装入后数据库即处于一致性状态;对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。 装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。即首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。然后正向扫描

13、日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。 介质故障的恢复需要DBA介入,但DBA只需要重装最近转储的数据库副本和有关的各日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成。,10.6 具有检查点的恢复技术,引入检查点的原因:利用日志文件进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要REDO或UNDO。这样会有两个问题:一是搜索整个日志将耗费大量时间,二是很多需要REDO的事务实际上已经将其更新结果写入数据库,然而重做这些操作,浪费了大量时间。为此,引入了检查点技术。 具有检查点的恢复技术:在日志文件中增加检查点

14、checkpoint记录 (记载检查点时刻所有正在执行的事务清单和这些事务最近一个日志记录的地址),增加一个重新开始文件(记载各个检查点记录在日志中的地址) 。 具有检查点技术的恢复步骤 从重新开始文件中找到最后一个检查点记录在日志中的地址,由该地址在日志文件中找到最后一个检查点记录。,由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST ,建立UNDO和REDO队列,把ACTIVE-LIST 暂时放入UNDO队列,REDO队列暂为空。 从检查点开始正向扫描日志,如有新开始事务加入UNDO队列,如有提交事务加入REDO队列。 对UNDO队列中的事务进行UNDO处理,对R

15、EDO队列中的事务进行REDO处理。,具有检查点技术的恢复示例,10.7 数据库镜像,介质故障是对系统影响最为严重的一种故障,恢复比较费时。为预防介质故障,DBA必须周期性地转储数据库,这也加重了DBA的负担。为避免出现介质故障而影响数据库的可用性,许多DBMS提供了数据库镜像(Mirror)的功能用于数据库恢复。 镜像时DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上。当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库

16、副本;没有出现故障时,数据库镜像还可用于并发操作,即当一个用户对数据加排他锁修改数据时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。,10.8 SQL Server恢复技术,SQL Server创建数据库时新的数据库继承了model数据库的恢复模型,常用恢复模型有简单恢复和完全恢复:简单恢复允许将数据库恢复到最新的备份,即恢复到上次备份点,而无法将数据库恢复到故障点或特定点,简单恢复只能做数据库备份,而无法做日志备份;完全恢复允许将数据库恢复到故障点,即完全恢复是使用数据库备份和事务日志备份对介质故障的完全防范。可以使用ALTER DATABASE语句的RECOVERY子句设置恢复模型,如将TEST数据库的恢复模型设为完全恢复: ALTER DATABASE TEST SET RECOVERY FULL 数据转储(备份):SQL Server支持全备份、增量备份、事务日志备份、文件和文件组备份等备份类型。所有的备份操

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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