收藏 分销(赏)

J第7章数据库恢复技术1概要PPT课件.ppt

上传人:a199****6536 文档编号:7709645 上传时间:2025-01-13 格式:PPT 页数:63 大小:213KB
下载 相关 举报
J第7章数据库恢复技术1概要PPT课件.ppt_第1页
第1页 / 共63页
J第7章数据库恢复技术1概要PPT课件.ppt_第2页
第2页 / 共63页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,.,*,数据库系统概论,An Introduction to Database System,第七章 数据库恢复技术,1,.,第七章 数据库恢复技术,7.1 事务的基本概念,7.2 数据库恢复概述,7.3 故障的种类,7.4 恢复的实现技术,7.5 恢复策略,2,.,7.1.1 事务的基本概念,事务处理技术包括,数据库恢复,和,并发控制,技术。,一、什么是事务?,事务(Transaction)是用户,定义,的一个数据库,操作序列,,这些操作,要么全做,要么全不做,,是一个不可分割的工作单位,DBMS将,事务,看作数据库运行中的一个,逻辑工作单位,,由DBMS的,事务管理子系统,负责事务的控制和管理。,事务是恢复和并发控制的基本单位,3,.,二、如何定义事务,显式定义方式,BEGIN TRANSACTION BEGIN TRANSACTION,SQL,语句1,SQL,语句1,SQL,语句2,SQL,语句2,。,COMMIT ROLLBACK,隐式方式,当用户没有显式地定义事务时,,DBMS按缺省规定自动划分事务,4,.,三、事务结束,COMMIT,事务正常结束,提交,事务的所有操作(,读+更新,),事务中所有对数据库的更新,永久,生效,ROLLBACK,事务异常终止,事务运行的过程中发生了故障,不能继续执行,回滚事务的所有,更新,操作,事务回滚到,开始,时的状态,5,.,7.1.2 实例,例1 将,学生-选课,数据库中,英语课的课程编号由1156修改为2256。,所涉及的关系:,Course(,Cno,Cname,Cpno,Ccredit),SC(Sno,Cno,Grade),根据参照完整性约束,应将两表中的1156都改为2256。,要将修改两个表的两个SQL语句定义成一个事务。DBMS对这两个语句要么都执行,要不都不执行。,6,.,定义事务如下:,BEGIN TRANSACTION,UPDATE Course,SET Cno=2256,WHERE Cno=1156;,UPDATE SC,SET Cno=2256,WHERE Cno=1156;,COMMIT,7,.,7.1.3 事务的特性,事务有4个特性(简称ACID特性):,原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持续性(Durability),8,.,1.原子性,原子性指:事务是数据库的逻辑工作单位,事务中包括的诸操作,要么都做,要么都不做,9,.,2.一致性,事务执行的结果必须是使数据库从一个,一致性状态变到另一个一致性状态,一致性状态,:,数据库中只包含成功事务提交的结果,不一致状态,:,如果数据库运行中发生故障,有些事务还没完成就被迫中断,事务对数据库的修改有一部分已写入数据表,这时数据库就处于不一致状态。,10,.,3.隔离性,对多个事务,并发,执行而言,一个事务的执行不能被其他事务干扰。,11,.,4.持续性,持续性也称永久性,一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。,接下来的其他操作或故障不应该对其执行结果有任何影响。,12,.,事务的特性,保证事务ACID特性是事务管理子系统的重要任务,可能破坏事务ACID特性的因素:,(1)多个事务并行运行时,不同事务的操作交叉执行,(2)事务在运行过程中被强行终止,对于(1)情况,DBMS必须保证多个事务的交叉运行,不影响这些事务的原子性。,对于(2)情况,DBMS必须保证被迫终止的事务对数据库和其他事务没有影响。,这些就是DBMS的,恢复机制,和,并发控制机制,的,责任,。,13,.,7.2 数据库恢复概述,故障是不可避免的,计算机硬件故障,系统软件和应用软件的错误,操作员的失误,恶意的破坏,故障的影响,轻则造成运行事务非正常中断,重则破坏数据库,使数据丢失,因此,DBMS必须具有,将数据库从错误状态恢复到某一已知的正确(一致)状态的功能,。,这就是数据库恢复功能,。,14,.,7.3,故障的种类,数据库系统可能发生的故障:,事务故障,系统故障,介质故障,计算机病毒,15,.,7.3.1、事务内部故障,什么是事务故障,某个事务在运行过程中由于种种原因未运行至正常终点就终止了,16,.,事务故障的恢复,发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘,事务故障的恢复:,撤消事务(UNDO),强行回滚(ROLLBACK)该事务,清除该事务对数据库的所有修改,使得这个事务象根本没有启动过一样,17,.,7.3.2 系统故障,什么是系统故障,系统故障是指造成系统停止运转的任何事件,,使得系统要重新启动,。,系统故障的常见原因,特定类型的硬件错误(如CPU故障),突然停电,操作系统或DBMS代码错误,操作员操作失误,18,.,系统故障的恢复,恢复子系统在系统重新启动时做到:,清除,尚未完成的,事务,对数据库的所有,修改,系统,重新启动时,,恢复程序要让所有非正常终止的事务回滚,强行撤消(UNDO)所有未完成事务,19,.,7.3.3 介质故障,系统故障称为,软故障,,介质故障称为,硬故障,。硬故障指外存故障。如:,硬盘损坏、磁头碰撞、瞬时强磁场干扰等。,硬件故障使存储在外存中的数据部分丢失或全部丢失。,这类故障将破坏数据库或破坏部分数据库,,,并影响正在存取这部分数据的事务。,介质故障比前两类故障的可能性小得多,但破坏性大得多,20,.,7.3.4 计算机病毒,这是人为的故障或破坏,是一种计算机程序,这种程序像病毒一样可以繁殖和传播,并造成对计算机系统包括数据库的危害。,计算机病毒已成为计算机系统的主要威胁,也是数据库系统的主要威胁。,计算机安全工作者已研制了许多防病毒和查、杀病毒的软件。但还没有使计算机终生免疫的“疫苗”。,因此数据库一旦被破坏,仍要用恢复技术对数据库进行恢复。,21,.,总结各类故障,对数据库的影响有两种可能:,一是数据库本身被破坏,,二是数据库没有破坏,但数据不正确(不一致),是因为事务的非正常终止造成的。,22,.,恢复操作的基本原理,恢复操作的基本原理:,冗余,利用,存储在系统其它地方的,冗余数据,来,重建,数据库中已被破坏或不正确的那部分数据,23,.,7.4 恢复的实现技术,恢复机制涉及的关键问题:,1.如何建立冗余数据,数据转储(backup),登录日志文件(Logging),2.如何利用这些冗余数据实施数据库恢复,24,.,7.4.1 数据转储,一、什么是转储,二、转储的用途,三、转储方法,25,.,一、什么是转储,转储,是指DBA定期地将整个数据库复制到另一个磁盘上保存起来的过程。,这些备用的数据文本称为,后备副本,或后援副本。,二、转储的用途,当数据库遭到破坏时,可以将后备副本重新装入。,26,.,例如:,故障发生点,转储,运行事务,正常运行,Ta Tb,Tf,重装后备副本,重新运行事务,恢复,此处停止运行事务,开始转储。,转储完毕,得到Tb时刻的数据库副本。然后继续运行事务。,重装后备副本,将数据恢复到Tb时刻的状态,重新运行TbTf时刻的所有更新事务,将数据恢复到故障发生前的状态,27,.,三、转储方法,转储十分耗费时间和资源,不能频繁进行.,DBA应根据数据库使用情况,确定一个适当的转储周期.,转储分为:,1静态转储与动态转储,2海量转储与增量转储,28,.,1静态转储,静态转储是指在系统中,无运行事务时,进行转储,转储开始时数据库处于,一致性,状态,转储期间不允许对数据库做任何存取、修改活动.,优点:实现简单,得到的是,一致性,的数据副本。,缺点:降低了数据库的可用性,转储必须等用户事务结束,新的事务必须等转储结束,29,.,利用静态转储副本进行恢复,故障发生点,静态,转储,运行事务,正常运行,Ta Tb,Tf,重装后备副本,恢复,此处停止运行事务,进行转储。,转储完毕,得到Tb时刻的数据库副本。然后继续运行事务。,重装后备副本,将数据恢复到Tb时刻的状态,30,.,2.动态转储,转储操作与用户事务并发进行,转储期间,允许,对数据库进行存取或修改,优点,不用等待正在运行的用户事务结束,不会影响新事务的运行,缺点,不能保证副本中的数据正确有效,31,.,例如,动态转储问题,A=100,转储,Ta Tb,Tc,A=200,运行事务,Td,Tc时刻,将A=100转储到磁盘上。,Td时刻,运行的事务,将A改为200,可见,转储结束时,副本上,的A=100数据已经过时了。因,此,需要把动态转储期间各事务,对数据库的修改活动登记下来,32,.,动态转储,利用动态转储得到的副本进行故障恢复,需要把动态转储期间各事务,对数据库的修改活动,登记下来,建立日志文件(Log File),后备副本,加上,日志文件,才能把数据库恢复到某一时刻的正确状态,33,.,2海量转储与增量转储,海量转储:,每次转储全部数据库,增量转储:,只转储上次转储后更新过的数据,海量转储与增量转储比较,从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便,但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效,34,.,3转储方法小结,转储方法分类,转储状态,动态转储,静态转储,转储方式,海量转储,动态海量转储,静态海量转储,增量转储,动态增量转储,静态增量转储,35,.,7.4.2 登记日志文件,一、日志文件的内容,二、日志文件的用途,三、登记日志文件的原则,36,.,一、日志文件的内容,1.什么是日志文件,日志文件(log)是用来记录事务对数据库的更新操作的文件,2.日志文件的格式有以下两种:,以,记录为单位,的日志文件,以,数据块为单位,的日志文件,37,.,日志文件的内容(续),3.,日志文件内容主要包括:,各个事务的开始标记(BEGIN TRANSACTION),各个事务的结束标记(COMMIT或ROLLBACK),各个事务的所有,更新操作,每个事务的以上内容作为日志文件中的一个日志记录(log record),38,.,4.基于记录的日志文件,每条日志记录的内容主要包括:,事务标识(标明是哪个事务),操作类型(插入、删除或修改),操作对象(记录内部标识),更新前数据的旧值(对插入操作而言,此项为空值),更新后数据的新值(对删除操作而言,此项为空值),39,.,5.以数据块为单位的日志文件,每条日志记录的内容包括:,事务标识(标明是哪个事务),更新前数据所在的整个数据块的值(对插入操作而言,此项为空值),更新后整个数据块的值(对删除操作而言,此项为空值),40,.,二、日志文件的用途,日志文件在数据库恢复中起着重要的作用。,如:,进行,事务故障,恢复,进行,系统故障,恢复,协助后备副本进行,介质故障,恢复,41,.,日志文件的用途(续),具体作用:,(1)事务故障和系统故障恢复必须用日志文件。,(2),日志文件,与静态转储后备副本配合进行介质故障恢复,42,.,日志文件的用途(续),故障发生点,静态转储 运行事务 ,正常运行,Ta Tb Tf,登记日志文件,重装后备副本 利用日志文件恢复事务 继续运行,介质故障恢复,登记日志文件,43,.,日志文件的用途(续),(3)在动态转储方式中建立日志文件,,LOG FILE+动态转储后备副本,进行有效的介质故障恢复,动态转储数据库,同时转储同一时点的日志文件,后备副本与该日志文件结合起来才能将数据库恢复到一致性状态。,利用这些日志文件副本进一步恢复事务,避免重新运行事务程序。,44,.,利用动态转储副本进行恢复,Ta,运行事务,Tb,Tf,动态,转储,运行事务,故障发生点,正常运行,登记日志文件 登记新日志文件,转储日志文件,重装后备副本+用转储的日志文件恢复,恢复到一,致性状态,45,.,三、登记日志文件的原则,为保证数据库是可恢复的,登记日志文件时必须遵循两条原则,登记的次序严格按并发事务执行的,时间次序,必须先写日志文件,后写数据库,先写日志文件操作:把表示对数据库修改的日志记录 写到日志文件中,后写数据库操作:把对数据的修改写到数据库中,46,.,7.5 恢复策略,7.5.1 事务故障的恢复,7.5.2 系统故障的恢复,7.5.3 介质故障的恢复,47,.,7.5.1 事务故障的恢复,事务故障:是指事务在运行至正常终止点之前被终止。,恢复方法,由恢复子系统利用日志文件撤消(UNDO)此事务已对数据库进行的修改,事务故障的恢复由系统自动完成,不需要用户干预,48,.,DBMS执行事务故障的恢复步骤,1.,反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。,2.对该事务的更新操作执行逆操作。即,将日志记录中“,更新前的值,”写入数据库。,登记的插入操作,“更新前的值”为空,则恢复时相当于做删除操作,登记的删除操作,“更新后的值”为空,则恢复时相当于做插入操作,若登记的是修改操作,则用,更新前的值,代替,更新后的值,49,.,事务故障的恢复步骤,3.继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。,4.如此处理下去,直至读到此事务的开始标记,,事务故障恢复,就完成了。,50,.,例:如图要对,事务Ti,进行恢复,即撤消(UNDO)该事务对数据库的修改,步骤如下:,(1)从日志文件尾反向扫描,找到,Ti-insert,记录,从中知道Ti插入了哪个记录,将其删除.,(2)再接着往回扫描,找到,Ti-update记录,从中知道Ti修改了哪个记录,将其用修改前的值替换回去.,(3)再接着往回找到,Ti-delete,记录,从中知道Ti删除了哪个记录,将其插入.,(4)再接着往回扫描,找到各个Ti的操作,执行UNDO操作直到,Ti-begin为止.,Ti-begin,Ti-delete,Ti-update,Ti-insert,日志文件尾,51,.,7.5.2 系统故障的恢复,系统故障造成数据库不一致状态的原因:,一些未完成事务对数据库的更新已写入数据库,一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库,恢复方法,1.Undo(撤消)故障发生时未完成的事务,2.Redo(重做)已完成的事务,系统故障的恢复由系统在,重新启动时,自动完成,,不需要用户干预,52,.,系统故障的恢复,步骤,1.正向扫描日志文件(即从前头扫描日志文件),将在故障发生前已经提交的事务记入Redo队列:T1,T3,T8.(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将故障发生时尚未完成的事务记入Undo队列:T2,T4,T5,T6,T7,T9 .(这些事务有BEGIN TRANSACTION记录,无COMMIT记录),53,.,系统故障的恢复步骤,2.对Undo队列事务进行UNDO(撤消)处理,反向扫描日志文件,对每个UNDO事务的更,新操作执行逆操作:将“更新前的值”写入数据库。,3.对Redo队列事务进行REDO(重做)处理,正向扫描日志文件,对每个REDO事务重新,执行登记的操作,将“更新后的值”写入数据库。,54,.,7.5.3 介质故障的恢复,发生,介质故障后,磁盘上的物理数据和日志文件被破坏。恢复的方法是:,1.重装数据库,,使数据库恢复到一致性状态,2.重做已完成的事务,55,.,7.5.3 介质故障的恢复,具体恢复步骤:,1.装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。,对于静态转储的数据库副本,装入后数据库即处于一致性状态,对于动态转储的数据库副本,还须同时装入,转储时刻的日志文件副本,,利用与恢复,系统故障,相同的方法(即,REDO+UNDO,),才能将数据库恢复到一致性状态。,56,.,利用静态转储副本将数据库恢复到一致性状态,故障发生点,静态,转储,运行事务,正常运行,Ta Tb,Tf,登记日志文件,重装后备副本 利用日志文件恢复,恢复,57,.,利用动态转储副本将数据库恢复到一致性状态,Ta Tb,Tf,动态,转储,运行事务,故障发生点,正常运行,登记日志文件 登记新日志文件,转储日志文件,重装后备副本和转储的日志文件,恢复到一,致性状态,58,.,介质故障的恢复(续),2.装入转储结束时刻的日志文件副本,重做已完成的事务。,首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。,然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。,59,.,介质故障的恢复(续),介质故障的恢复需要DBA介入,DBA的工作,重装最近转储的数据库副本和有关的各日志文件副本,执行系统提供的恢复命令,具体的恢复操作仍由DBMS完成,60,.,小结(续),DBMS必须对,事务故障,、,系统故障,和,介质故障,进行恢复,恢复中最经常使用的技术:,数据库转储和登记日志文件,恢复的基本原理:,利用存储在后备副本、日志文件中的冗余数据来重建数据库,61,.,小结(续),常用恢复技术,事务故障的恢复,UNDO,系统故障的恢复,UNDO+REDO,介质故障的恢复,重装备份(数据库+日志文件)并恢复到一致性状态+REDO,62,.,下课了。,休息一会儿。,探,63,.,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服