您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库原理概论第十章.
数据库系统概论第十章数据库恢复技术第十章数据库恢复技术10.1事务的基本概念10.2数据库恢复概述10.3故障的种类10.4恢复的实现技术10.5恢复策略10.6具有检查点的恢复技术10.7数据库镜像数据库系统概论第十章数据库恢复技术10.1事务的基本概念一、事务事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务和程序是两个概念•在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序;•一个应用程序通常包含多个事务。事务是恢复和并发控制的基本单位。数据库系统概论第十章数据库恢复技术二、如何定义事务显式定义方式BEGINTRANSACTIONSQL语句1SQL语句2……COMMIT隐式方式当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务COMMIT事务正常结束提交事务的所有操作(读+更新)事务中所有对数据库的更新永久生效ROLLBACK事务异常终止事务运行的过程中发生了故障,不能继续执行回滚事务的所有更新操作事务滚回到开始时的状态BEGINTRANSACTIONSQL语句1SQL语句2……ROLLBACK数据库系统概论第十章数据库恢复技术三、事务的特性(ACID特性)1.原子性(Atomicity)2.一致性(Consistency)3.隔离性(Isolation)4.持续性(Durability)也称永久性(Permanence)事务是数据库的逻辑工作单位。事务中包括的诸操作要么都做,要么都不做。事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一个事务的执行不能被其他事务干扰一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。保证事务ACID特性是事务处理的任务破坏事务ACID特性的因素多个事务并行运行时,不同事务的操作交叉执行;事务在运行过程中被强行停止。数据库系统概论第十章数据库恢复技术10.2数据库恢复概述故障是不可避免的计算机硬件故障;系统软件和应用软件的错误;操作员的失误;恶意的破坏。故障的影响运行事务非正常中断;破坏数据库。数据库管理系统对故障的对策DBMS提供恢复子系统;保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态;保证事务ACID。恢复技术是衡量系统优劣的重要指标数据库系统概论第十章数据库恢复技术10.3故障的种类事务故障系统故障介质故障计算机病毒数据库系统概论第十章数据库恢复技术一、事务内部故障指某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了。事务内部故障有的是可以通过程序本身发现的;有的是非预期的,不能由事务程序处理,如:输入数据有误、运算溢出、违反了某些完整性限制、某些应用程序出错、并行事务发生死锁等等。以后,事务故障仅指这一类故障。事务故障意味着事务没有达到预期的终点(COMMIT或者显式的ROLLBACK),因此,数据库可能处于不正确状态。恢复程序要在不影响其它事务运行的情况下,强行回滚(ROLLBACK)该事务,即撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本没有启动一样。这类恢复操作称为事务撤消(UNDO)。例如:银行转帐事务。这个事务把一笔金额从一个帐户甲转给另一个帐户乙。BEGINTRANSACTION读帐户甲的余额BALANCE;BALANCE=BALANCE-AMOUNT;(Amount为转帐金额)IF(BALANCE0)THEN{打印'金额不足,不能转帐';ROLLBACK;(撤消刚才的修改,恢复事务)}ELSE{读帐户乙的余额BALANCE1;BALANCE1=BALANCE1+AMOUNT;写回BALANCE1;COMMIT;}数据库系统概论第十章数据库恢复技术二、系统故障系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。引起的原因:特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等等。故障的后果:影响正在运行的所有事务,但不破坏数据库。这时主存内容,尤其是数据库缓冲区(在内存)中的内容都被丢失,所有运行事务都非正常终止。发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,有些已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,从而造成数据库可能处于不正确的状态。故障的恢复:为保证数据一致性,恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤消(UNDO)所有未完成事务。重做(Redo)所有已提交的事务,以将数据库真正恢复到一致状态。数据库系统概论第十章数据库恢复技术三、介质故障系统故障常称为软故障(SoftCrash)。介质故障称为硬故障(HardCrash)。硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。硬故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。硬故障的恢复:装入数据库发生介质故障前某个时刻的数据副本,重做自此时开始的所有成功事务,将这些事务已提交的结果重新记入数据库数据库系统概论第十章数据库恢复技术四、计算机病毒计算机病毒是一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序,这种程序与其他程序不同,它象微生物学所称的病毒一样可以繁殖和传播,并造成对计算机系统包括数据库的危害。总结各类故障,对数据库的影响有两种可能性,一是数据库本身被破坏,二是数据库没有破坏,但数据可能不正确,这是因为事务的运行被中止造成的。恢复操作的基本原理:冗余利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据恢复的实现技术:复杂一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上。数据库系统概论第十章数据库恢复技术10.4恢复的实现技术恢复机制涉及的关键问题1.如何建立冗余数据•数据转储(backup)•登录日志文件(logging)2.如何利用这些冗余数据实施数据库恢复数据库系统概论第十章数据库恢复技术10.4.1数据转储一、什么是转储故障发生点转储运行事务↓正常运行─┼───────┼─────────────TaTbTf重装后备副本重新运行事务恢复─┼───────┴------------→图7.1转储和恢复二、转储的用途转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。三、转储方法1.静态转储与动态转储2.海量转储与增量转储数据库系统概论第十章数据库恢复技术1.静态转储在系统中无运行事务时进行转储;转储开始时数据库处于一致性状态;转储期间不允许对数据库的任何存取、修改活动;优点:实现简单;缺点:降低了数据库的可用性。转储必须等用户事务结束;新的事务必须等转储结束。数据库系统概论第十章数据库恢复技术2.动态转储转储操作与用户事务并发进行;转储期间允许对数据库进行存取或修改;优点:不用等待正在运行的用户事务结束;不会影响新事务的运行。动态转储的缺点:不能保证副本中的数据正确有效。利用动态转储得到的副本进行故障恢复时需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态数据库系统概论第十章数据库恢复技术3.海量转储与增量转储海量转储:每次转储全部数据库。增量转储:只转储上次转储后更新过的数据。海量转储与增量转储比较:从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便;但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。数据库系统概论第十章数据库恢复技术4.转储方法小结表7.1转储方法分类转储状态动态转储静态转储转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储数据库系统概论第十章数据库恢复技术5.转储策略应定期进行数据转储,制作后备副本。但转储又是十分耗费时间和资源的,不能频繁进行。DBA应该根据数据库使用情况确定适当的转储周期和转储方法。例:每天晚上进行动态增量转储每周进行一次动态海量转储每月进行一次静态海量转储数据库系统概论第十章数据库恢复技术10.4.2登记日志文件一、日志文件的格式和内容1.什么是日志文件日志文件(log)是用来记录事务对数据库的更新操作的文件。2.日志文件的格式以记录为单位的日志文件以数据块为单位的日志文件3.日志文件内容数据库系统概论第十章数据库恢复技术基于记录的日志文件日志文件的主要内容各个事务的开始标记(BEGINTRANSACTION);各个事务的结束标记(COMMIT或ROLLBACK);各个事务的所有更新操作;每条日志记录的内容事务标识;操作类型(插入、删除或修改);操作对象(记录ID、BlockNO.);更新前数据的旧值(对插入操作而言,此项为空值);更新后数据的新值(对删除操作而言,此项为空值)。日志文件中的一个日志记录(logrecord)数据库系统概论第十章数据库恢复技术基于数据块的日志文件每条日志记录的内容事务标识(标明是那个事务)更新前数据所在的整个数据块的值(对插入操作而言,此项为空值)更新后整个数据块的值(对删除操作而言,此项为空值)数据库系统概论第十章数据库恢复技术二、日志文件的作用1.进行事务故障恢复2.进行系统故障恢复3.协助后备副本进行介质故障恢复动态转储方式中必需建立日志文件和后备副本配合才能有效的恢复数据库。静态转储方式也可以建立日志文件。静态转储的数据已是一致性的数据如果静态转储完成后,仍能定期转储日志文件,则在出现故障重装数据副本后,可以利用这些日志文件副本对已完成的事务进行重做处理,对故障发生时末完成的事务进行撤消处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态数据库系统概论第十章数据库恢复技术利用日志文件恢复故障发生点静态转储运行事务↓正常运行─┼──────┼──────────┼──TaTbTf登记日志文件└───────────┴──重装后备副本利用日志文件恢复事务继续运行介质故障恢复─────────┴-----─-------┴──────登记日志文件└──────数据库系统概论第十章数据库恢复技术三、登记日志文件的原则1.登记的次序严格按并行事务执行的时间次序2.必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写到日志文件写数据库操作:把对数据的修改写到数据库中为什么要先写日志文件写数据库和写日志文件是两个不同的操作,在这两个操作之间可能发生故障;如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了;如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。数据库系统概论第十章数据库恢复技术10.5恢复策略10.5.1事务故障的恢复事务故障:事务在运行至正常终止点前被中止。恢复方法——由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改事务故障的恢复由系统自动完成,不需要用户干预,具体步骤如下:1.反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。2.对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”(BeforImage,BI)写入数据库。插入操作,“更新前的值”为空,则相当于做删除操作删除操作,“更新后的值”为空,则相当于做插入操作若是修改操作,则用BI代替AI(AfterImage)3.继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。4.如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。数据库系统概论第十章数据库恢复技术10.5.2系统
本文标题:数据库原理概论第十章.
链接地址:https://www.777doc.com/doc-2332686 .html