您好,欢迎访问三七文档
普通高等教育十一五规划教材数据库原理教程范明、叶阳东、邱保志、职为梅编著科学出版社,2008第10章数据库的恢复技术2020年2月16日星期日数据库系统原理3数据库的恢复技术计算机系统是会发生故障的,造成故障的原因可能是磁盘损坏电源崩溃计算机病毒软件错误等一旦这些故障发生,就可能会丢失信息,产生数据库故障,因此,数据库系统必须预先采取措施,以保证系统在发生故障的时候,可以保持事务的原子性和持久性数据库的恢复机制就是负责将数据库恢复到故障发生前的某一个一致状态,并将崩溃后的数据库不能使用的时间减少到最小2020年2月16日星期日数据库系统原理4第7章数据库设计10.1故障分类10.2存储器结构10.3基于日志的恢复技术10.4基于检测点的恢复技术10.5缓冲技术10.6介质故障恢复技术10.7其他恢复技术10.8小结10.1故障分类2020年2月16日星期日数据库系统原理6故障分类数据库系统可能发生的故障有多种,每种故障要用不同的方法处理。主要有以下几类故障:1.事务故障2.系统故障3.介质故障2020年2月16日星期日数据库系统原理7故障分类(续)1.事务故障某个事务在运行过程中由于种种原因未能运行到正常终止而夭折可能导致事务执行失败的两类错误事务程序的逻辑错误例如,事务内部的非法输入、溢出、超出资源限制等系统错误,系统进入一种不良状态(如死锁),使得事务无法继续正常执行出现这类问题的事务可以在以后的某个时间重新执行后果与处理发生事务故障时,夭折的事务可能已经把对数据库的部分修改写入数据库,导致数据库可能处于不正确状态回滚该事务,清除该事务对数据库的所有更新2020年2月16日星期日数据库系统原理8故障分类(续)2.系统故障由于某种原因造成整个系统的正常运行突然停止,致使所有正在运行的事务都以非正常方式终止发生系统故障时,内存中数据库缓冲区的信息全部丢失,但不破坏存储在外部存储设备上的数据造成系统故障的原因:CPU故障、数据库软件代码错误、操作系统故障、系统断电等后果与处理一些尚未完成的事务的结果可能已经写入物理数据库,一些完成的事务的某些更新可能还在内存缓冲区,尚未写入数据库系统重启后,恢复子系统必须撤销故障发生时所有未完成事务对数据库的更新,并利用日志将完成的事务的更新写入数据库2020年2月16日星期日数据库系统原理9故障分类(续)3.介质故障(磁盘故障)又称磁盘故障,是指存储数据库的存储设备故障故障原因磁盘损坏、磁头碰撞、操作系统的某种潜在错误和瞬时强磁场干扰都可能导致介质故障后果与处理介质故障可能导致存储在外存中数据库的数据部分丢失或全部丢失需要修复或更换存储介质,然后重启系统系统重启后,首先装入数据库发生介质故障前的最新数据库副本然后,利用日志将建立副本以来所有已完成的事务的更新写入数据库这类故障比前两类故障发生的可能小,但破坏性更大2020年2月16日星期日数据库系统原理10故障分类(续)其他故障例如,计算机病毒和恶意攻击也可能导致数据库中的全部或部分数据破坏处理首先要清除病毒和阻止恶意攻击采用与介质故障恢复相同的方法。2020年2月16日星期日数据库系统原理11恢复的基本思想不同的故障需要不同的恢复技术,但是它们的基本思想是一样的:在系统正常运行时建立冗余数据,保证有足够的信息可用于故障恢复故障发生后采取措施,将数据库内容恢复到某个一致性状态,保证事务原子性和持久性DBMS恢复机制涉及的关键问题:如何建立冗余数据如何利用这些冗余数据进行故障恢复2020年2月16日星期日数据库系统原理12恢复的基本思想(续)建立冗余数据数据库系统主要通过登记日志和数据转储来建立冗余数据日志记录了数据库的所有更新的详细信息,所有故障的恢复都需要使用它数据转储制作数据库的后备副本,这些副本与日志配合使用,用来实现介质故障恢复数据库镜像在不同的存储介质上维护数据库的同步副本,也是建立冗余数据的一种方法使用数据库镜像可以简化介质故障的恢复,但需要附加的存储设备2020年2月16日星期日数据库系统原理13恢复的基本思想(续)利用冗余数据进行故障恢复需要考虑的因素:存储器的性质事务的更新何时写入数据库即时更新延迟更新更新输出到数据库的时机影响恢复的实现缓冲为了提高I/O效率,系统广泛使用缓冲区技术缓冲区是内存区域,一般由操作系统或DBMS统一管理事务对数据库的更新实际上被写入内存缓冲区,何时物理地输出到磁盘取决于缓冲区管理和调度10.2存储器结构2020年2月16日星期日数据库系统原理15存储器类型存储器类型数据库的存储设备按其存取速度、容量和故障可恢复性可分为如下三种:易失性存储器(volatilestorage)非易失性存储器(nonvolatilestorage)稳定存储器(stablestorage)易失性存储器该类存储器包括主存储器、高速缓冲存储器等存取速度很快,并且可以直接存取所存储的任何数据项系统发生故障时,存储在易失性存储器上的数据将丢失2020年2月16日星期日数据库系统原理16存储器类型(续)非易失性存储器非易失性存储器包括磁、磁带等磁盘一般作为联机存储器磁带通常作为后援存储器磁盘比主存可靠性强但比磁带可靠性弱,但两者都可能出现故障,导致信息丢失除非出现介质故障和恶意攻击,否则非易失存储器中的信息不会丢失在数据库系统中,通常使用磁盘存放数据库和联机日志,而其它非易失性存储器一般用来存储数据库和日志的后备副本2020年2月16日星期日数据库系统原理17存储器类型(续)稳定存储器是一种理想的存储器,其中的信息永不丢失“永不”是相对的,从理论来说是无法保证的尽管理论上不能得到稳定存储器,但可以使用技术手段使得非易失性存储器中的信息极不可能丢失,来逼近稳定存储器例如:采用多个异地副本2020年2月16日星期日数据库系统原理18存储器类型(续)数据库的恢复原理是基于数据的冗余,也就是说,数据库中任何一部分被破坏的或不一致的数据可以用存储在系统别处的冗余数据来重建本章所讨论的数据库恢复技术,将以上述的三种存储器为基础2020年2月16日星期日数据库系统原理19稳定存储器实现要实现稳定存储器,就要在多个非易失性存储介质上以独立的故障模式复制所需要信息,并且以某种受控的方式更新数据,以保证数据传送过程中发生的故障不会破坏所需信息采用冗余独立磁盘阵列(RAID:RedundantArraysofIndependentDisks,)可以保证单个磁盘的故障(即使发生在数据传送的过程中)不会导致数据丢失2020年2月16日星期日数据库系统原理20稳定存储器实现(续)最简单并且最快的冗余独立磁盘阵列形式是磁盘镜像在不同的磁盘上为每个磁盘块保存两个副本但是系统不能防止由于灾难(如大火或洪水)而导致的数据丢失许多系统通过将归档备份存储在磁带上并转移到其他地方来防止这种灾难由于磁带不能被连续不断地移至其他地方,最后一次磁带被转移数据以后所做的更新可能会在这样的灾难中丢失更安全的系统在远程站点为稳定存储器的每一个块保存一个副本,除在本地磁盘系统进行存储外,还通过网络存储到远程站点由于在往本地存储输出块的同时也要输出到远程系统,一旦输出操作完成,即使发生大火或洪水这样的灾难,输出结果也不会丢失2020年2月16日星期日数据库系统原理21数据访问数据库通常驻留在磁盘上,并且划分成固定长度的块块是磁盘传送的基本单位,可能包含多个记录(元组)缓冲块是那些暂时驻留在主存中的块,而称位于磁盘上的块为物理块块在主存和磁盘之间的移动通过以下两种操作引发input(B):将物理块B传送到主存缓冲块output(B):将缓冲块B传送到磁盘,并替换相应的物理块这两个操作都是系统操作,并不显式出现在事务的操作序列中。事务使用read和write操作读写数据库中的数据2020年2月16日星期日数据库系统原理22数据访问(续)每个事务Ti都有一个私有工作区,存放它所访问和更新的所有数据对象的私有副本(称为局部变量)假设数据对象X的Ti私有副本为xi,BX是存放X的块。数据在工作区、缓冲区和磁盘之间的传送如图10.1所示BXinput(B)output(B)主存缓冲区磁盘BXxiTi的工作区read(X)write(X)内存图10.1数据在工作区、缓冲区和磁盘传输2020年2月16日星期日数据库系统原理23数据访问(续)事务Ti的read(X)实际上是将数据对象X的值赋给局部变量xi如果数据对象X在物理块BX中,则read(X)导致执行input(BX)将磁盘中的物理块BX传送到主存缓冲区的主存块BX,并将主存块BX中的数据对象X的值传送到Ti工作区,赋予Ti的私有副本xi之后,事务Ti对数据对象X的运算实际上是在Ti的私有副本xi上进行类似地,事务Ti的write(X)将它的私有副本xi的值传送到主存块BX赋予X如果X所在的块BX不在主存缓冲区,则先执行input(BX)操作,将磁盘中的物理块BX传送到主存缓冲区,之后再将xi的值赋予主存块BX中的X数据对象X的新值输出到磁盘数据库由output(BX)完成2020年2月16日星期日数据库系统原理24数据访问(续)注意:主存块BX最终将被输出到磁盘上,但是output(BX)不必紧随write(X),系统会在合适的时候执行output(BX)操作必要时,系统可以发出output(BX),将缓冲块BX强制输出到磁盘可能存在的问题如果在操作write(X)执行之后,操作output(BX)执行之前系统发生故障,数据对象X的新值并未输出到磁盘上的数据库中,可能导致更新值的丢失恢复机制必须考虑这一问题2020年2月16日星期日数据库系统原理25数据访问(续)在下面的讨论中,假设事务对数据库的更新都是由write操作导致的插入新元组需要先将一个不满的磁盘块或新的磁盘块输入到主存缓冲区,再用write操作将新元组写入主存缓冲块删除元组需要先将被删除元组所在的磁盘块输入到主存缓冲区,清空主存缓冲块中的该元组(相当于write的内容为空)修改需要先将被修改元组所在的磁盘块输入到主存缓冲区,然后用write操作将修改后的属性值写入主存缓冲块10.3基于日志的恢复技术2020年2月16日星期日数据库系统原理27日志日志(log)是日志记录的序列,记录了数据库中所有的更新活动日志登记了每个事务的开始标记、结束标记和所有更新操作事务结束可能是正常提交(commit),也可能是异常中止(abort)事务的更新可能是插入、删除和修改1.日志记录的格式一条更新日志记录记录了一个事务对数据库的一次write操作,它包括如下信息:事务标识符:执行更新操作的事务的惟一标识符操作类型:指明更新是插入、删除,还是修改操作对象:被更新的数据对象的惟一标识,通常是数据对象在磁盘上的位置旧值:数据对象更新前的值。对插入操作而言,此项为空新值:数据对象更新后的值。对删除操作而言,此项为空2020年2月16日星期日数据库系统原理28日志(续)为了便于讨论,本书假设各种类型的日志记录具有如下形式:Ti,start:事务Ti开始。Ti,Xj,V1,V2:事务Ti对Xj的一次更新其中V1是旧值,V2是新值对于插入,V1为空对于删除,V2为空操作类型实际上被V1和V2是否为空所蕴涵Ti,commit:事务Ti正常提交Ti,abort:事务Ti异常中止2020年2月16日星期日数据库系统原理29日志(续)2.登记日志的原则为了保证系统能够在故障恢复时使用日志记录,日志必须放在稳定存储器上(通常是不同于存放数据库的磁盘),并且日志登记必须要遵守以下两条原则:(1)日志记录必须严格按并发事务执行的时间次序登记(2)必须先记日志,后写数据库;也就是说,在每次
本文标题:数据库讲解10
链接地址:https://www.777doc.com/doc-3800416 .html