您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库系统基础讲义第23讲数据库事务处理技术-故障恢复
数据库系统之四--数据库管理系统实现技术课程1:基本知识与关系模型课程2:数据库语言-SQL课程3:数据建模与数据库设计课程4:数据库管理系统实现技术数据库系统第23讲数据库事务处理技术(故障恢复)ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师黑龙江省教学名师教育部大学计算机课程教学指导委员会委员战德臣教授本讲学习什么?基本内容1. 数据库故障恢复的宏观思路2. 运行日志及其检查点3. 三种类型的运行日志4. 利用运行日志进行故障恢复重点与难点理解三种类型的故障:事务故障、系统故障和介质故障三种类型故障的恢复手段:运行日志和副本理解检查点的作用理解三种类型的运行日志及其故障恢复的操作方法:Undo型日志,Redo型日志,Undo/Redo型日志数据库的故障类型及其影响ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师黑龙江省教学名师教育部大学计算机课程教学指导委员会委员战德臣教授DBMS的运行方式DBMS利用内存(主存)和外存(辅存)这样的存储体系来进行数据库管理在内存中, 又将其分为程序数据(事务数据)和系统数据数据库的故障类型及其影响(1)你要知道的DBDBBuffer易失性内存T2T2’sDataT1T1’sDataT3T3’sData介质存储战德臣教授事务事务是DBMS对数据库进行控制的基本逻辑单元。事务:宏观上是由程序员设置的一条或多条SQL语句的一次执行;微观上是对数据元素的一系列基本操作,如读写等。需要提交和撤销。数据元素:通常1 数据元素= 1 磁盘块/内存页也可以更小(=1 记录)或更大(=1 关系)事务具有四个特性:ACID特性原子性Atomicity一致性Consistency隔离性Isolation持久性Durability故障恢复涉及到如何保证原子性和持久性数据库的故障类型及其影响(1)你要知道的战德臣教授事务故障某一个程序(事务)自身运行错误所引起的故障影响该程序(事务)本身系统故障由于掉电、非正常关机等所引起的故障影响正在运行的事务以及数据库缓冲区, 数据库缓冲区将涉及正在运行和已经运行的事务介质故障由于介质损坏等所引起的故障影响是全面的,既影响内存中的数据, 又影响介质中存储的数据数据库的故障及其影响数据库的故障类型及其影响(2)数据库故障类型DBMS核心技术故障恢复DBMS中故障恢复程序约占10%把DB由当前不正确状态恢复到已知为正确的某一状态数据库故障恢复的宏观思路ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师黑龙江省教学名师教育部大学计算机课程教学指导委员会委员战德臣教授数据库故障恢复把DB由当前不正确状态恢复到已知为正确的某一状态。需要保证事务的:原子性:事务的所有操作,要么全都执行,要么全都不执行。持久性:已提交的事务对数据库产生的影响是持久的,未提交的事务对数据库不应有影响。事务故障的恢复事务故障可通过重做事务(Redo)和撤消事务(Undo)来恢复。重做事务可保证已提交事务的持久性,而撤销事务则消除未提交事务的影响数据库故障恢复的宏观思路(1)故障恢复与事务故障恢复战德臣教授系统故障恢复运行日志(System Log)运行日志是DBMS维护的一个文件,该文件以流水方式记录了每一个事务对数据库的每一次操作及操作顺序运行日志直接写入介质存储上,会保持正确性当事务对数据库进行操作时:先写运行日志;写成功后,再与数据库缓冲区进行信息交换LogFileDBDBBuffer易失性内存T2T2’sDataT1T1’sDataT3T3’sData介质存储LogBuffer数据库故障恢复的宏观思路(2)系统故障恢复战德臣教授系统故障可通过运行日志来恢复按照运行日志记录的事务操作顺序重做事务(当事务在发生故障时已正确结束)或撤消事务(当事务在发生故障时未结束) 但故障恢复是需要时间的运行日志保留了若干天的记录,当发生系统故障时应从哪一个点开始恢复呢?t故障点运行日志开始记录点事务数据库故障恢复的宏观思路(2)系统故障恢复战德臣教授DBMS在运行日志中定期的设置和更新检查点(checkpoint)检查点是这样的时刻: 在该时刻, DBMS强制使内存DB Buffer中的内容与介质DB中的内容保持一致,即将DB Buffer更新的所有内容写回DB中检查点表征了:在检查点之前内存中数据与介质中数据是保持一致的系统故障的恢复检查点之前结束的事务不需要恢复(已经写回DB)检查点之后结束或发生的事务需要依据运行日志进行恢复(不能确定是否写回DB): 故障点前结束的重做, 故障点时刻未结束的撤消t故障点checkpoint数据库故障恢复的宏观思路(2)系统故障恢复战德臣教授介质故障恢复副本(Copy)在某一时刻,对数据库在其他介质存储上产生的另一份等同记录用副本替换被损坏的数据库LogFileDBDBBuffer易失性内存T2T2’sDataT1T1’sDataT3T3’sData介质存储LogBufferDBBackupCopies介质存储数据库故障恢复的宏观思路(3)介质故障恢复战德臣教授介质故障的恢复用副本替换被破坏的数据库由于介质故障影响全面, 在用副本恢复后还需要依据运行日志进行恢复如何确定备份的时刻: 转储点过频,影响系统工作效率;过疏,会造成运行日志过大,也影响系统运行性能备份转储周期与运行日志的大小密切相关,应注意防止衔接不畅而引起的漏洞BackupCopiest故障点checkpoint转储点SystemLog数据库故障恢复的宏观思路(3)介质故障恢复战德臣教授三种类型故障:事务故障、系统故障和介质故障三种恢复手段: 事务的撤消与重做, 运行日志和备份两个重要时刻:检查点和转储点数据库故障恢复的宏观思路(4)小结什么是日志?ResearchCenteronIntelligentComputingforEnterprises&Services,HarbinInstituteofTechnology战德臣哈尔滨工业大学教授.博士生导师黑龙江省教学名师教育部大学计算机课程教学指导委员会委员战德臣教授数据库通常由元素构成通常,1 元素= 1 磁盘块= 1 内存页/块可以更小,=1 记录或更大=1 关系每个事务都会读/写某些元素READ(X,t):将元素X读到事务的局部变量t中WRITE(X,t):将事务局部变量t写回元素XINPUT(X):将元素X从磁盘读入到内存缓冲区中OUTPUT(X):将元素X写回到磁盘中每个事务都以提交或者撤销结束COMMIT:事务提交ABORT:事务撤销什么是日志?(1)事务涉及到的INPUT/OUTPUTRead/WriteOutput(X)是强制进行输出,将缓冲区内容写回磁盘事务发出缓冲区管理器发出战德臣教授DBMS需要保证事务的:持久性:已提交的事务对数据库产生的影响是持久的,未提交的事务对数据库不应有影响。原子性:事务的所有操作,要么全都执行,要么全都不执行。什么是日志?(1)事务涉及到的INPUT/OUTPUTRead/Write持久性:已提交事务--缓冲区内容保证写回磁盘未提交事务--缓冲区内容不能影响磁盘战德臣教授缓冲区处理策略Force:内存中的数据昀晚在commit的时候写入磁盘。No steal:不允许在事务commit之前把内存中的数据写入磁盘。No force:内存中的数据可以一直保留,在commit之后过一段时间再写入磁盘。(此时在系统崩溃的时候可能还没写入到磁盘,需要Redo)。--灵活Steal:允许在事务commit之前把内存中的数据写入磁盘。(此时若系统在commit之前崩溃时,已经有数据写入到磁盘了,要恢复到崩溃前的状态,需要Undo)。--灵活当前昀常用的:Steal+No force什么是日志?(2)不同的缓冲区策略会影响事务的持久性INPUT/OUTPUTRead/Write既要考虑数据读写的速度又要考虑怎样保证数据正确缓冲区内容不一定和磁盘内容一致哟战德臣教授Begin TRANSACTIONREAD(A,t);t:=t*2;WRITE(A,t);READ(B,t);t:=t*2;WRITE(B,t)COMMIT;End TRANSACTION原子性:A和B同时乘以2什么是日志?(3)事务故障会影响事务的原子性DBMS如何保证呢?战德臣教授8881616INPUT(B)888INPUT(A)1616161616OUTPUT(B)816161616OUTPUT(A)88161616WRITE(B,t)8881616t:=t*2888168READ(B,t)888DiskB81616WRITE(A,t)8816t:=t*2888READ(A,t)DiskAMemBMemAtAction磁盘缓冲区事务INPUT(A)888READ(A,t)8888t:=t*216888WRITE(A,t)161688INPUT(B)1616888READ(B,t)816888t:=t*21616888WRITE(B,t)16161688OUTPUT(A)161616168OUTPUT(B)1616161616什么是日志?(3)事务故障会影响事务的原子性战德臣教授8881616INPUT(B)888INPUT(A)---16161616OUTPUT(B)816161616OUTPUT(A)88161616WRITE(B,t)8881616t:=t*2888168READ(B,t)888DiskB81616WRITE(A,t)8816t:=t*2888READ(A,t)DiskAMemBMemAtAction原子性:A和B同时乘以2, 是否受影响?故障发生于Output(A)后Output(B)前什么是日志?(3)事务故障会影响事务的原子性战德臣教授日志一个包含日志记录的只能追加的顺序文件, 不同事务的日志记录交错存储,按发生时间存储发生系统故障时,使用日志进行恢复:故障时已提交的事务,重做(Redo)故障时未提交的事务,撤销(Undo)日志记录的信息Start T,表示事务T已经开始Commit T,表示事务T成功完成Abort T,事务T未成功,被中止T, X, v1 或者T, X, v2 或者T, X, v1,v2表示事务T改变了数据库元素X,X原来的值为v1(X的旧值),X新的值为v2.三种日志: Undo型日志,Redo型日志,Undo/Redo型日志记录内容和记录次序不同,恢复策略也不同什么是日志?(4)怎样记录日志?战德臣教授ForceNoForceNoStealSteal昀慢昀快ForceNoForceNoStealSteal读写性能日志/恢复策略只需Redo无需Undo无需Redo无需Undo无需Redo只需Undo需要Redo需要Undo什么是日志?(4)怎样记录日志?缓冲区处理策略与日志/恢复策略的关系战德臣教授日志一个包含日志记录的、只能追加的顺序文件, 不同事务的日志记录交错存储,按发生时间存储。发生系统故障时,使用日志进行恢复:故障时已提交的事务,重做(Redo)故障时未提交的事务,撤销(Undo)Undo型日志Redo型日志Undo/ Redo结合型日志•如何记录日志文件,记录什么?•如何设置检查点?•如何依据日志文
本文标题:数据库系统基础讲义第23讲数据库事务处理技术-故障恢复
链接地址:https://www.777doc.com/doc-4982596 .html