《数据库原理数据库恢复技术.pptx》由会员分享,可在线阅读,更多相关《数据库原理数据库恢复技术.pptx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10章 数据库恢复技术第1节 事务的基本概念第2节 数据库恢复概述第3节 故障的种类第4节 恢复的实现技术第5节 恢复策略第6节 具有检查点的恢复技术第7节 数据库镜像第1页/共38页1 事务的概念事务(Transaction)概念用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在关系数据库中,一个事务可以是一条sql语句,一组sql语句或整个程序。通常,一个程序可以包括多个事务事务的开始和结束一般可由用户显式控制,否则将由DBMS按缺省方式自动划分。SQL语言中,定义事务的语句有:bgein transactionCommitRollback事务程序n1
2、第2页/共38页Transaction示例BEGIN TRANSACTIONINSERT into;DELETE from;if sqlca.sqlcode=SUCCESSCOMMIT;elseROLLBACK;第3页/共38页事务的特性(ACID)原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability)第4页/共38页事务示例转账事务转账:从帐户A向帐户B事务转¥50,包括两个:从账号A中减去50元;向账号B加入50元。定义一个事务。事务特性一致性:要求帐户A,B的金额总和在事务执行后保持不变。原子性:要求这两个操作要么执行,要么
3、不执行。隔离性:要求隔离并发操作。持续性:要求事务一旦提交,就是永久更改。第5页/共38页影响ACID的因素影响因素多个事务并发运行时,不同事务的操作交叉执行。事务在运行过程中被强行停止。数据库管理系统的重要任务(保证ACID)并发控制恢复机制第6页/共38页2 数据库恢复概述硬件故障软件故障操作失误恶意破坏事务中断数据库破坏部分/全部数据丢失第7页/共38页恢复概念概念将数据库从错误状态恢复到某一已知的正确状态(也称一致状态或完整状态)。恢复技术的地位恢复技术是数据库管理系统的重要组成部分;对系统的可靠性起决定作用;对系统的效率有很大影响;是衡量系统性能优劣的重要指标。第8页/共38页3 故
4、障的种类事务内部的故障系统故障介质故障计算机病毒第9页/共38页事务内部的故障概述事务内部故障,有的可以通过事务程序本身发现,有的是非预期的,不能有事务程序处理。示例:银行转账begin transaction 读取帐户甲的余额balance;balance=balance-amount;if(balance0)then打印金额不足,不能转帐;rollback;else写回balance;读取帐户乙的余额balance;balance=balance+amount;写回帐户乙的余额balance;commit;第10页/共38页示例中事务内部故障可预料故障如:资金不足。不可预料运算溢出并发事务
5、死锁而被选中撤销违反了完整性约束等第11页/共38页系统故障概念系统故障指造成系统停止运转的任何事件,使得系统要重新启动。例如:硬件错误,操作系统故障,dbms代码错误,突然停电等。系统故障的影响系统故障影响正在运行的事务,但是不破坏数据库。主存内容,尤其是数据库缓冲区中的内容都被丢失,所有正运行的事务都非正常终止。一些事务未完成,但结果可能已经写进了数据库。而有些事务已完成,但结果尚留在缓冲区中。恢复子系统的功能undo:所有未完成事务;redo:所有已提交事务第12页/共38页介质故障软硬故障系统故障常称为软故障(Soft Crash)。介质故障常称为硬故障(Hard Crash)。介质故
6、障外存故障,如磁盘损坏,磁头碰撞,瞬时强磁场干扰等。影响:破坏部分数据库,影响正存取这些数据的事务。特点:发生几率小,但破坏性最大。第13页/共38页计算机病毒概念计算机病毒是一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。计算机病毒种类多,繁殖快,已经成为计算机系统的主要威胁。第14页/共38页恢复原理冗余数据库中任何一部分被破坏或不正确的数据可以根据存储在系统别处的冗余数据来重建。第15页/共38页4 恢复的实现技术恢复机制的关键问题第一,如何建立冗余数据;第二,如何利用冗余数据实施恢复。建立冗余的常用方法数据转储登录日志文件通常同时使用第16页/共38页数据转储基本概念数据转储
7、是数据库恢复中的基本技术。转储就是DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。备用的数据文件称为后备副本或后援副本。分类按状态分静态转储:在系统中无事务运行时进行转储。动态转储:指转储期间允许对数据库进行存取或修改。转储和事务并发执行。(后备副本+日志文件)按方式分海量转储:每次转储全部数据。增量转储:每次转储上次转储后更新过的数据。第17页/共38页转储和恢复示意转储与恢复的过程(静态转储)TaTbTf转储运行事务故障发生点正常运行重装后备副本重新运行事务恢复第18页/共38页登记日志文件(logging)日志文件的内容记录事务对数据库的更新操作。分类以记录为单位以数据块为
8、单位第19页/共38页记录为单位的日志日志文件内容各个事务的开始标志(begin transaction)各个事务的结束标志(commit,rollback)各个事务的所有更新操作以上3种标记或操作在日志文件中以日志记录(log record)形式存在。日志记录(log record)内容事务标志(标明是哪个事务)操作的类型(插入、删除、修改)操作对象(记录内部标识)更新前数据的旧值(插入操作为空)更新后数据的新值(删除操作为空)第20页/共38页数据块为单位日志文件内容内容事务标志被更新数据块操作类型操作对象信息?不必放入第21页/共38页日志文件的作用作用事务故障恢复系统故障恢复协助后备副
9、本进行介质故障恢复具体说明事务故障、系统故障的恢复必须用日志文件。动态转储方式中必须建立日志文件,后援副本和日志文件的综合,才能有效的恢复数据库。静态转储中也可以建立日志文件。使得恢复时不必重新运行事务程序就可以恢复到故障前一刻的正确性状态。第22页/共38页利用日志恢复示意静态转储中利用日志进行恢复TaTbTf静态转储运行事务故障发生点正常运行重装后备副本利用日志恢复事务介质故障恢复继续运行登记日志文件登记日志文件第23页/共38页登记日志文件登记日志文件的原则登记的次序严格按并发事务执行的时间次序必须先写日志文件,后写数据库必须先写日志文件,后写数据库先写日志的原因写数据库和日志文件是两个
10、不同的操作,有可能只完成一个。如果先写数据库,后写日志,则数据库中已经写入而日志中没有记录的操作,以后将不能恢复;如果先写日志但没有改变数据库,则按日志恢复时顶多多执行一次不必要的undo操作,并不会影响数据库的正确性。第24页/共38页5 恢复策略事务故障恢复系统故障恢复介质故障恢复第25页/共38页事务故障的恢复步骤反向扫描日志文件,查找该事务的更新操作对事务的更新操作作逆操作。即将“更新前的值”写入数据库继续反向扫描日志文件,查找该事务的其他更新操作,并同样处理。如此处理下去,直到读到该事务的开始标记,事务故障恢复就完成了。第26页/共38页系统故障的恢复任务撤销故障发生时未完成的事务重
11、做已完成的事务。步骤正向扫描日志文件,找出故障发生前已经提交的事务(既有begin transaction,又有commit),将其事务标识记入重做(redo)队列;同时找出故障发生时尚未完成的事务,将其事务标识记入撤消(undo)队列。对撤消队列中的各个事务进行撤消处理(UNDO)。UNDO方法,反向扫描日志,将位于UNDO队列中的事务进行撤销。对重做队列中的各个事务进行重做处理(REDO)。REDO方法是,正向扫描日志文件,对在REDO队列中的事务重新执行日志文件登记的操作。第27页/共38页介质故障的恢复步骤装入最新的数据库副本,使数据库恢复到最近一次转储时的一致性状态。对于动态转储的数
12、据库副本,还应该装入转储开始时刻的日志文件副本,利用系统故障恢复的方法(REDO+UNDO)才能恢复到一致性状态。装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。具体方法是先扫描日志文件,生成重做队列,然后正向扫描日志文件,对重做队列中的所有事务重做。第28页/共38页是否需要DBA介入?事务故障和系统故障,不需要DBA介入,系统自动完成。介质故障需要DBA介入。DBA需要装入数据库副本和相应的各日志文件副本,然后执行系统恢复命令才可以由DBMS完成恢复操作。第29页/共38页6 具有检查点的恢复技术原因搜索整个日志将耗费大量的时间。很多需要REDO处理的事务实际上已经
13、将他们的更新操作写到了数据库中,如果重做会浪费很多时间。检查点恢复在日志文件中增加一类新的记录(检查点记录)。增加一个重新开始文件,并让恢复子系统在登录日志文件期间动态地维护日志。检查点记录的内容建立检查点时刻所有正在执行的事务清单这些事务最近一个日志记录的地址第30页/共38页检查点日志文件和重新开始文件Ci检查点记录地址T1D1T2D2检查点记录日志记录检查点Ci的重新开始记录重新开始文件日志文件第31页/共38页动态维护日志文件的方法将当前日志缓冲中的所有日志记录写入磁盘的日志文件在日志文件中写入一个检查点记录把当前数据缓冲的所有数据记录写入磁盘的数据库把检查点记录在日志文件中的地址写入
14、一个重新开始文件第32页/共38页事务的状态Tc(检查点)T1T2T3T4T5不用REDOREDOUNDOREDOUNDOTf(系统故障点)第33页/共38页恢复步骤从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录由检查点记录得到检查点建立时所有正在执行的事务清单,建立两个事务队列:UNDO-LIST和REDO-LIST。所有正执行的事务放入UNDO-LIST。从检查点开始正向扫描日志文件。如有新开始的事务Ti,把Ti暂时放到UNDO-LIST;如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST,直到日志文件结束。对UN
15、DO-LIST、REDO-LIST队列中的每个事务分别做UNDO或REDO操作。第34页/共38页7 数据库镜象数据库镜像(Mirror)根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。主数据库更新时,DBMS自动地把更新后的数据复制过去,由DBMS自动保证镜像数据与主数据的一致性。出现介质故障时,由镜像磁盘继续提供使用,同时,DBMS自动利用镜像磁盘数据进行数据库恢复,不需要关闭系统和重装数据库副本。实际应用第35页/共38页数据库镜像示意图由于数据库镜像是通过复制数据实现的,频繁进行复制会降低系统运行效率,因此往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像。ReadReadRead应用1镜像应用2应用3应用4update复制镜像应用2应用3应用4ReadReadRead应用1update恢复第36页/共38页作业第4版P289:1-13第37页/共38页感谢您的观看!第38页/共38页