adb08_系统故障与恢复.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第十章系统故障与恢复数据库保护数据库保护:排除和防止各种对数据库的干扰破坏,确保数据安全可靠;以及在数据库遭到破坏后尽快地恢复数据库保护通过四个方面来实现数据库的恢复技术[thischapter]Dealwithfailure并发控制技术[NextChp.]Dealwithdatasharing完整性控制技术[notdiscuss]Enableconstraints安全性控制技术[notdiscuss]Authorizationandauthentication故障后,如何恢复?STEP1确定设备的故障状态STEP2分析故障对DB的影响有哪些?STEP3设计恢复算法存有足够的信息(故障前)DB的定期备份Log采取适当措施,恢复数据库(故障后)45数据库的一致性和正确性事务的状态及原语操作数据库系统故障分析Undo日志Redo日志Undo/Redo日志Checkpoint主要内容一、事务的状态及原语操作事务(transaction)一个不可分割的操作序列,其中的操作要么都做,要么都不做1、事务事务的例子银行转帐:A帐户转帐到B帐户100元。该处理包括了两个更新步骤A=A-100B=B+100这两个操作是不可分的:要么都做,要么都不作1、事务事务的ACID性质原子性atomicity事务是不可分的原子,其中的操作要么都做,要么都不做一致性consistency事务的执行保证数据库从一个一致状态转到另一个一致状态隔离性Isolation多个事务一起执行时相互独立持久性Durability事务一旦成功提交,就在数据库永久保存2、事务的状态[inlogs]StartTTransactionThasstartedCommitTThasfinishedsuccessfullyandallmodificationsarereflectedtodisksAbortTThasbeenterminatedandallmodificationshavebeencanceled3、事务的原语操作input(x):diskblockwithxmemoryoutput(x):bufferblockwithxdiskRead(x,t):doinput(x)ifnecessary;valueofxinbuffertWrite(x,t):valueoftxinbufferdooutput(x)ifnecessary;数据X:在DISK中(对应DB中的一个数据元素)在内存中(一个Buffer中)事务T:局部变量t在内存中(一个Buffer中)日志(LOG)在DISK中(即DB中)在内存中(一个Buffer中)OUTPUT(X)INPUT(X)Read(X,t)Write(X,t)FlushLog4、事务例子T1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);Output(A);Output(B);Abanktransfer5、SQL对事务的支持SQL标准提供了三个语句,允许应用程序声明事务和控制事务BeginTransactionCommitTransactionRollbackTransactionT1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);Output(A);Output(B);Abanktransfer二、数据库的一致性和正确性一致性(consistency)正确性(correctness)1、一致性(Consistency)IntegrityorconsistencyconstraintsPredicatesdatamustsatisfyExamples:-xiskeyofrelationR-xyholdsinR-Domain(x)={Red,Blue,Green}1、一致性(Consistency)Consistentstate:satisfiesallintegrityconstraintsConsistentDB:DBinconsistentstate1、一致性(Consistency)DBwillnotalwayssatisfyconstraintsExample:a1+a2+….an=TOT(constraint)Transaction:Deposit$100ina2:a2a2+100TOTTOT+100..50..1000..150..1000..150..1100a2TOTState1:consistentState2:“inconsistent”State3:consistent事务的ACID性质Atomicity,Consistency,Isolation,DurabilityconsistencyoftransactionConsistentDBConsistentDB’T但事务内部不保证DB的一致性1、一致性(Consistency)2、正确性(Correctness)DBRealityDBshouldreflectrealworldDBshouldreflectrealworldExample:Atelephonenumber3601123--correctabcdefg--notcorrectCanbepreservedbyexplicitconstraints!2、正确性(Correctness)DBshouldreflectrealworldExample:Atelephonenumber3601123--correct9999999--Isitcorrect?Notcorrectinreality,butcanDBknowthis?Answer:NO!2、正确性(Correctness)CorrectnessofDBCorrectnessofrealityCorrectnessofDB如果数据库在事务开始执行时是一致的,并且事务执行结束后数据库仍处于一致状态,则数据库满足正确性.ConsistencyofDB+ACIDoftransactionCorrectnessofDB2、正确性(Correctness)三、数据库系统故障分析ConsistencyofDB可能由于故障而被破坏事务故障介质故障系统故障1、事务故障发生在单个事务内部的故障可预期的事务故障:即应用程序可以发现的故障,如转帐时余额不足。由应用程序处理非预期的事务故障:如运算溢出、掉电等,导致事务被异常中止。应用程序无法处理此类故障,由系统进行处理2、介质故障硬故障(HardCrash),一般指磁盘损坏导致磁盘数据丢失,破坏整个数据库3、系统故障系统故障:软故障(SoftCrash),由于OS、DBMS软件问题或断电等问题导致内存数据丢失,但磁盘数据仍在影响所有正在运行的事务,破坏事务状态,但不破坏整个数据库4、数据库系统故障恢复策略目的恢复DB到一致状态基本原则冗余(Redundancy)实现方法定期转储整个数据库建立事务日志(log)通过备份和日志进行恢复4、数据库系统故障恢复策略t0t1t2转储运行事务Crash登记日志文件重装副本利用日志文件进行恢复继续运行事务登记日志文件介质故障恢复系统故障和事务故障恢复当发生故障时:(1)若是介质故障,则首先重装副本(2)利用日志进行事务故障恢复和系统故障恢复,一直恢复到故障发生点Therecoveryprocess四、Undo日志事务日志记录了所有更新操作的具体细节Undo日志、Redo日志、Undo/Redo日志日志文件的登记严格按事务执行的时间次序Undo日志文件中的内容事务的开始标记(StartT)事务的结束标记(Commit,T或AbortT)事务的更新操作记录,一般包括以下内容执行操作的事务标识操作对象更新前值1、Undo日志规则事务的每一个修改操作都生成一个日志记录T,x,old-value在x被写到磁盘之前,对应此修改的日志记录必须已被写到磁盘上当事务的所有修改结果都已写入磁盘后,将Commit,T日志记录写到磁盘上WriteAheadLogging(WAL日志)先写日志先写日志(Write-AheadLog)原则在数据被写到磁盘之前,对应此修改的日志记录必须已被写到磁盘上先写日志T1,BeginTransactionT1,A,1000,900设T1将A修改为900时发生故障。设此时900已写到数据库,但还未来得及写该日志记录到磁盘上。根据恢复策略,T1在恢复应UNDO,但此时由于后写日志,A的更新操作在日志中没有记录,因此无法将A恢复到1000******************************************如果先写日志,则即使没有将900写到数据库中,也只不过多执行一次UNDO操作,不会影响数据库的一致性。后写日志T1,BeginTransaction1、Undo日志规则T1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);FlushLogOutput(A);Output(B);FlushLogStart,T1T,A,1000T,B,2000Commit,T1LogInitial:A=1000B=2000将日志记录从缓冲区写到Disk上将缓冲区中A的值写到Disk上1、Undo日志规则—故障1T1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);FlushLogOutput(A);Output(B);FlushLogFailhereA:900B:2100A:1000B:2000…Start,T1T1,A,1000T1,B,2000…MemoryDisk1、Undo日志规则—故障2T1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);FlushLogOutput(A);Output(B);FlushLogFailhereA:900B:2100A:900B:2000…Start,T1T1,A,1000T1,B,2000…Start,T1T1,A,1000T1,B,2000MemoryDisk1、Undo日志规则—故障3T1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);FlushLogOutput(A);Output(B);FlushLogFailhereA:900B:2100A:900B:2100…Start,T1T1,A,1000T1,B,2000Commit,T…Start,T1T1,A,1000T1,B,2000MemoryDisk1、Undo日志规则—故障4T1:Read(A,t);tt-100;Write(A,t);Read(B,t);tt+100;Write(B,t);FlushLogOutput(A);Output(B);FlushLogSuccess!MemoryA:900B:2100A:900B:2100…Start,T1T1,A,1000T1,B,2000Commit,T…Start,T1T1,A,1000T1,B,2000Commit,TDisk2、基于Undo日志的恢复t0t1t2转储运行事务Crash登记日志文件重装副本利用日志文件进行恢复继续运行事务登记日志文件介质故障恢复系统故障和事务故障恢复TherecoveryprocessRecove

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功