(数据库原理课件)Chapter15-Recovery.ppt

上传人(卖家):晟晟文业 文档编号:4980739 上传时间:2023-01-30 格式:PPT 页数:60 大小:1.15MB
下载 相关 举报
(数据库原理课件)Chapter15-Recovery.ppt_第1页
第1页 / 共60页
(数据库原理课件)Chapter15-Recovery.ppt_第2页
第2页 / 共60页
(数据库原理课件)Chapter15-Recovery.ppt_第3页
第3页 / 共60页
(数据库原理课件)Chapter15-Recovery.ppt_第4页
第4页 / 共60页
(数据库原理课件)Chapter15-Recovery.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、n基于锁的协议n两段锁协议n多粒度n封锁带来的问题n故障n日志n恢复n故障分类n数据库恢复n备份n恢复n指事务的运行没有到达预期的终点就被终止n非预期故障n不能由事务程序处理的n如运算溢出,发生死锁而被选中撤消该事务n可预期故障n应用程序可以发现的事务故障,并且应用程序可以让事务回滚n如转帐时发现帐面金额不足n软故障(soft crash):在硬件故障、软件错误的影响下,虽引起内存信息丢失,但未破坏外存中数据n如CPU故障、突然停电,DBMS,OS,应用程序等异常终止n硬故障(hard crash):又称磁盘故障,破坏外存上的数据库,并影响正在存取这部分数据的所有事务n如磁盘的磁头碰撞、瞬时的

2、强磁场干扰n恢复是把数据库从错误状态恢复到某一正确状态的功能,从而确保数据库的一致性n恢复的基本原理是冗余,即数据库中任一部分的数据可以根据存储在系统别处的冗余数据来重建n将数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据称为后备(后援)副本n静态转储n转储期间不允许对数据库进行任何存取、修改活动n动态转储n转储期间允许对数据库进行存取或修改n海量转储n每次转储全部数据库n增量转储n每次只转储上次转储后更新过的数据n数据库备份创建备份完成时数据库内存在的数据的副本,通常按常规时间间隔调度n还原数据库备份将重新创建数据库和备份完成时数据库中存在的所有相关文件。但是,自创建备份后所做的

3、任何数据库修改都将丢失USE masterEXEC sp_addumpdevice disk,MyBKDB,DISK=c:MyBKDB.datBACKUP DATABASE stuInfor TO MyBKDB RESTORE DATABASE stuInfor FROM MyBKDB nSQL Server支持的备份策略主要有支持的备份策略主要有4种:种:n完全数据库备份n差异数据库备份n文件与文件组备份n事务日志备份n生成备份设备生成备份设备sp_addumpdevice devtype,logical_name,physical_namen生成磁盘备份设备生成磁盘备份设备nUse mas

4、ternExec sp_addumpdevice disk,nwbackup,D:backupsnwbackup.bakn备份数据库备份数据库n备份到磁盘备份设备备份到磁盘备份设备nBACKUP DATABASE northwind to nwbackupn备份到指定路径:备份到指定路径:nB A C K U P D A T A B A S E n o r t h w i n d t o DISK=D:backupsnwbackup.bak思考:如何利用存储过程,动态建立思考:如何利用存储过程,动态建立 dbname_db_YYMMDDHHMM.bak格式的备份文件名格式的备份文件名(1)完全

5、数据库备份)完全数据库备份nuse masternBACKUP DATABASE Northwind to nwbackupnWITHnNOUNLOA,nNAME=Northwind full database backup,nDescription=Full backup for wednesday(2)差异数据库备份)差异数据库备份(DCM)nuse masternB A C K U P D A T A B A S E N o r t h w i n d t o DISK=D:backupnwtemp.baknWITHnDIFFERENTIAL,nNAME=Northwind full d

6、atabase backup,nDescription=Full backup for wednesday(3)事务日志备份)事务日志备份n事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录,它可以将数据库恢复到特定的即时点或恢复到故障点BACKUP DATABASE MyDB TO MyDB_1 WITH INITBACKUP LOG MyDB TO MyDB_log1BACKUP LOG MyDB TO MyDB_log2WITH NO_TRUNCATERESTORE DATABASE MyDB FROM MyDB_1 WITH NORECOVERYRESTORE LOG M

7、yDB FROM MyDB_log1 WITH NORECOVERYRESTORE LOG MyDB FROM MyDB_log2 WITH RECOVERY(3)事务日志备份)事务日志备份n简单日志备份简单日志备份n-Backup to a permanent backup device.Dont initialize the devicenuse masternbackup log northwind to nwlogbacknwithnnoinit,nName=northwind log backupnnoformat(3)事务日志备份)事务日志备份n清除完全事务日志清除完全事务日志nu

8、se masternbackup log northwind to nwlogbacknwithnno_log(3)事务日志备份)事务日志备份n无法访问数据库时备份日志无法访问数据库时备份日志nuse masternbackup log northwind to nwlogbacknwithnno_truncaten可以备份和还原数据库中的个别文件。这样可以只还原已损坏的文件,而不用还原数据库的其余部分,从而加快恢复速度BACKUP DATABASE MyDB FILE=MyDB_data_1,FILEGROUP=file_group1,FILE=MyDB_data_2,FILEGROUP=f

9、ile_group2 TO MyDB_1RESTORE DATABASE MyDB FILE=MyDB_data_1,FILEGROUP=file_group1,FILE=MyDB_data_2,FILEGROUP=file_group2 FROM MyDB_1 WITH NORECOVERYnbackupset表 nlogmarkhistory表 RESTORE DATABASE MyDB FROM MyDB WITH NORECOVERYRESTORE LOG MyDB FROM MyDB_log1 WITH RECOVERY,STOPAT=Jul 1,2003 10:00 AMn允许将数

10、据库恢复到最新的备份n数据库备份+差异备份(可选)n允许将数据库恢复到故障点状态n数据库备份+差异备份(可选)+事务日志备份n允许大容量日志记录操作(SELECT INTO,bcp,BULK INSERT)n数据库备份+差异备份(可选)+事务日志备份n可以将数据库从一个恢复模型切换到另一个恢复模型,以满足不断变化的业务要求n例如,如果系统需要完全的可恢复性,可以在装载和索引操作的过程中,将数据库的恢复模型更改到批量日志记录模型,然后再返回到完全恢复 n日志文件是以事务为单位用来记录数据库的每一次更新活动的文件,由系统自动记录n日志内容包括:记录名、旧记录值、新记录值、事务标识符、操作标识符等n

11、事务Ti开始时,写入日志:n事务Ti执行writewrite(X)前,写入日志:,V1 是X更新前的值,V2 是X更新后的值n事务Ti结束后,写入日志:(a)(b)(c)n通过在日志中记录所有数据库修改,而将一个事务的所有write操作拖延到事务部分提交时才执行n一旦日志记录都写到了稳定存储器上,就真正执行更新,并且事务进入提交状态 n延迟更新技术只需要数据项的新值 (a)(b)(c)(a)(b)(c)不必做任何不必做任何redo操作操作删除日志删除日志Redo(T0)删除删除T1日志日志Redo(T0)Redo(T1)n允许数据库修改在事务仍处于活跃状态时就输出到数据库中。活跃事务所作的数据

12、修改称为未提交修改n必须遵守先写日志的原则n对于尚未提交的事务,在将DB缓冲区写到外存之前,必须先将日志缓冲区内容写到外存去n日志记录将要发生何种修改n写入DB表示实际发生何种修改n如果先写DB,则可能在写的中途发生系统崩溃,导致内存缓冲区内容丢失,而外存DB处于不一致状态,由于日志缓冲区内容已破坏,导致无法对DB恢复先写先写DBDB A=950B=2050故障发生点 A=1000B=2050故障恢复后先写日志先写日志 A=950B=2000故障发生点 A=1000B=2000故障恢复后日志缓冲区数据库缓冲区日志数据库WAL调入B2输出B1输出所有与B1有关的日志记录输出B1调入B2n圆满事务

13、n日志文件中记录了事务的commit标识n夭折事务n日志文件中只有事务的Begin transaction标识,无commit T0夭折事务T0圆满事务,T1夭折事务 T0圆满事务,T1圆满事务n对圆满事务所做过的修改操作应执行redo操作,即重新执行该操作,修改对象被赋予新记录值redo=redo2n对夭折事务所做过的修改操作应执行undo操作,即撤消该操作,修改对象被赋予旧记录值undo=undo2undo A=1000redo A=950n撤消事务已对数据库所做的修改n措施n反向扫描日志文件,查找该事务的更新操作n对该事务的更新操作执行逆操作,即将事务更新前的旧值写入数据库n继续反向扫描

14、日志文件,查找该事务的其他更新操作,并做同样处理n如此处理下去,直至读到此事务的开始标识,事务的故障恢复就完成了 A=950B=2000故障发生点undo A=950B=2000故障恢复1undo A=1000B=2000故障恢复2 A=1000B=2000故障恢复结束 A=950故障发生点undo A=950undo A=1000undo A=1000undo A=950n不一致状态原因n未完成事务对数据库的更新已写入数据库n已提交事务对数据库的更新未写入数据库n措施n正向扫描日志文件,找出圆满事务,记入重做队列;找出夭折事务,记入撤消队列n反向扫描日志,对撤消队列中事务Ti的每一个日志记录

15、执行undo操作n正向扫描日志文件,对重做队列中事务Ti的每一个日志记录执行redo操作T0圆满事务,T1夭折事务redoredoundoA=950,B=2050,C=700n磁盘上数据文件和日志文件遭到破坏n措施n装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态n装入相应的日志文件副本,重做已完成的事务TaTbTf正常运行正常运行介质故障恢复介质故障恢复转储转储运行事务运行事务故障发生点故障发生点重装后援副本重装后援副本利用日志文件恢复事务利用日志文件恢复事务继续运行继续运行n当系统故障发生时,我们必须搜索整个日志,以决定哪些事务需要redo,哪些需要undon大多数需要被

16、重做的事务其更新已经写入了数据库中(redo2)。尽管对它们重做不会造成不良后果,但会使恢复过程变得更长n将当前日志缓冲区的所有日志记录写入稳存中n在日志文件中写入一个检查点记录n将当前数据缓冲区的所有数据记录写入稳存中n输出检查点时活跃事务的列表L n检查点起点的 LSNn最旧的活动事务起点的 LSN虚拟日志1虚拟日志2虚拟日志3虚拟日志4虚拟日志5被截断未使用逻辑日志的始端逻辑日志的末端MinLSN最后一个检查点虚拟日志1虚拟日志2虚拟日志3虚拟日志4被截断逻辑日志的始端逻辑日志的末端MinLSN最后一个检查点倒数第二个检查点n在增长的日志记录空间中的日志记录的第一个字节的地址。这是一个单

17、调递增的数值n表示一个记录是补偿日志(compensation),正常更新记录(update),一个提交协议相关记录(例如prepare)n事务的标记,如有,则写入到日志记录中n本事务的前一条日志记录的LSN。对该事务的第一条日志记录而言是0,因此,不需要用一条日志记录显式地表示一条事务的开始n只在Update和compensation类型的记录中出现,它记录本记录所所做更新的页面的标记n这是描述欲更新的redo和/或undo数据。CLR只包含redo信息,因为它们不能undon只在CLR中出现,它指的是回滚阶段要处理的下一个本事务的日志记录,也即UndoNxtLSN是当前日志正在弥补的日志记

18、录的PrevLSN的数值。如果已经没有日志记录需要undo,该数据域就会是0n数据库的每个页都有page_LSN域。它包含描述对该页面所做的最近更新日志记录的LSN。n事务表记录活跃事务的状态nTransID:事务的IDnState:事务的提交状态nLastLSN:事务所写的最后一条LSNnUndoNxtLSN:在回滚阶段下一个记录的LSN。如果本事务的最近日志记录是一个可undo的非CLR记录,这个字段的值就会被设为LastLSN。如果最近日志记录是CLR,此字段的值就设为此CLR的UndoNxtLSN的值n包含一个在数据库缓冲区中已更新页的列表,它为每一页保存其PageID和一个称为Rec

19、LSN的字段nRecLSN用于标识日志记录,这些日志记录的磁盘页版本已实施更新n当一页被插入到脏页表时,RecLSN的值被设置成日志的当前末尾n只要页被写入磁盘,该页就被从脏页表中移除。n包含脏页和活动事务的列表,同时记录每个事务的LastLSN 在将更新的数据库对象的修改写入磁盘之前,先将对应的日志记录写入稳存在崩溃后进行重新启动时,重做崩溃前的所有操作,使系统恢复到崩溃时的状态,然后取消崩溃时还在执行的事务已完成的操作在取消某些事务时,如果出现对数据库的改变,则需要在日志中记录这些改变,保证在重复进行重新启动时不需要重复这些操作分析重做撤销崩溃时活动事务最早的日志记录分析结束时脏页中最小的recLSN最近的检查点崩溃日志ARIES算法中恢复的三个阶段n如果该页不在脏页表中,或者该update日志记录的LSN小于脏页表中该页的RecLSN,Redo过程就跳过该日志记录n否则Redo过程就从磁盘调出该页,如果其PageLSN小于该日志记录的LSN,重做该日志记录

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文((数据库原理课件)Chapter15-Recovery.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|