adb08_系统故障与恢复_第1页
adb08_系统故障与恢复_第2页
adb08_系统故障与恢复_第3页
adb08_系统故障与恢复_第4页
adb08_系统故障与恢复_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第十章第十章 系统故障与恢复系统故障与恢复数据库保护数据库保护n数据库保护:数据库保护:排除和防止排除和防止各种对数据库的干扰破坏各种对数据库的干扰破坏,确保数据安全可靠;以及在数据库遭到破坏后,确保数据安全可靠;以及在数据库遭到破坏后尽尽快地恢复快地恢复n数据库保护通过四个方面来实现数据库保护通过四个方面来实现n数据库的恢复技术数据库的恢复技术 this chapternDeal with failuren并发控制技术并发控制技术 Next Chp.nDeal with data sharingn完整性控制技术完整性控制技术 not discussnEnable constraintsn安

2、全性控制技术安全性控制技术 not discussnAuthorization and authentication 故障后,如何恢复?故障后,如何恢复?nSTEP1 确定设备的故障状态确定设备的故障状态nSTEP2 分析故障对分析故障对DB的影响有哪些?的影响有哪些?nSTEP3 设计恢复算法设计恢复算法n存有足够的信息(故障前)存有足够的信息(故障前)nDB的定期备份的定期备份nLogn采取适当措施,恢复数据库(故障后)采取适当措施,恢复数据库(故障后)45n数据库的一致性和正确性数据库的一致性和正确性n事务的状态及原语操作事务的状态及原语操作n数据库系统故障分析数据库系统故障分析nUnd

3、oUndo日志日志nRedoRedo日志日志nUndo/RedoUndo/Redo日志日志nCheckpointCheckpoint主要内容主要内容一、事务的状态及原语操作一、事务的状态及原语操作n事务事务(transaction)n一个一个不可分割不可分割的操作的操作序列序列,其中的操作要么都做,要么都,其中的操作要么都做,要么都不做不做1、事务、事务n事务的例子事务的例子n银行转帐:银行转帐:A帐户转帐到帐户转帐到B帐户帐户100元。该处理包括了两个元。该处理包括了两个更新步骤更新步骤nA=A-100nB=B+100n这两个操作是不可分的:要么都做,要么都不作这两个操作是不可分的:要么都做

4、,要么都不作1、事务、事务n事务的事务的ACID性质性质n原子性原子性 atomicityn事务是不可分的原子,其中的操作要么都做,要么都事务是不可分的原子,其中的操作要么都做,要么都不做不做n一致性一致性 consistencyn事务的执行保证数据库从一个一致状态转到另一个一事务的执行保证数据库从一个一致状态转到另一个一致状态致状态n隔离性隔离性 Isolationn多个事务一起执行时相互独立多个事务一起执行时相互独立n持久性持久性 Durabilityn事务一旦成功提交,就在数据库永久保存事务一旦成功提交,就在数据库永久保存2、事务的状态、事务的状态 in logsnnTransactio

5、n T has startednnT has finished successfully and all modifications are reflected to disksnnT has been terminated and all modifications have been canceled3、事务的原语操作、事务的原语操作ninput (x): disk block with x memorynoutput (x): buffer block with x diskvRead (x,t): do input(x) if necessary; value of x in buff

6、er tvWrite (x,t): value of t x in buffer do output(x) if necessary;n数据数据X:n在在DISK中(对应中(对应DB中的一个数据元素)中的一个数据元素)n在内存中(一个在内存中(一个Buffer中)中)n事务事务T:n局部变量局部变量tn在内存中(一个在内存中(一个Buffer中)中)n日志日志(LOG)n在在DISK中(即中(即DB中)中)n在内存中(一个在内存中(一个Buffer中)中)OUTPUT(X)INPUT(X)Read(X,t)Write(X,t)Flush Log在此处修在此处修改数据改数据4、事务例子、事务例子

7、T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Output (A);Output (B);A bank transfer5、SQL对事务的支持对事务的支持nSQL标准提供了三个语句,允许应用程序声明事务和控制标准提供了三个语句,允许应用程序声明事务和控制事务事务nBegin TransactionnCommit TransactionnRollback TransactionT1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t

8、);Output (A);Output (B);A bank transfer二、数据库的一致性和正确性二、数据库的一致性和正确性n一致性一致性 (consistency)n正确性正确性 (correctness)1、一致性(、一致性(Consistency)nPredicates data must satisfynExamples:- x is key of relation R- x y holds in R- Domain(x) = Red, Blue, Green1、一致性(、一致性(Consistency)nConsistent state: satisfies all integ

9、rity constraintsnConsistent DB: DB in consistent state1、一致性(、一致性(Consistency)nDB will not always satisfy constraints Example: a1 + a2 +. an = TOT (constraint)Transaction: Deposit $100 in a2: a2 a2 + 100 TOT TOT + 100.50.1000.150.1000.150.1100a2TOTState 1: consistentState 2: “inconsistent”State 3: co

10、nsistentn事务的事务的ACID性质性质nAtomicity, Consistency, Isolation, DurabilityConsistent DBConsistent DBT但事务内部不保证但事务内部不保证DB的一致性的一致性1、一致性(、一致性(Consistency)2、正确性(、正确性(Correctness)DBRealityExample:A telephone number3601123 correctabcdefg not correctCan be preserved by explicit constraints!2、正确性(、正确性(Correctness

11、)Example:A telephone number3601123 correct9999999 Is it correct?Not correct in reality, but can DB know this?Answer: NO!2、正确性(、正确性(Correctness)nCorrectness of DB Correctness of realityCorrectness of DB如果数据库在事务开始执行时是一致的,并且事务如果数据库在事务开始执行时是一致的,并且事务执行结束后数据库仍处于一致状态,则数据库满足执行结束后数据库仍处于一致状态,则数据库满足正确性正确性.Cons

12、istency of DB + ACID of transaction Correctness of DB2、正确性(、正确性(Correctness)三、数据库系统故障分析三、数据库系统故障分析nConsistency of DB 可能由于故障而被破坏可能由于故障而被破坏n事务故障事务故障n介质故障介质故障n系统故障系统故障1、事务故障、事务故障n发生在单个事务内部的故障发生在单个事务内部的故障n可预期的事务故障:即应用程序可以发现的故障,如转帐可预期的事务故障:即应用程序可以发现的故障,如转帐时余额不足。由时余额不足。由应用程序应用程序处理处理n非预期的事务故障:如运算溢出、掉电等,导致非

13、预期的事务故障:如运算溢出、掉电等,导致事务被异事务被异常中止常中止。应用程序无法处理此类故障,由。应用程序无法处理此类故障,由系统系统进行处理进行处理2、介质故障、介质故障n硬故障(硬故障(Hard Crash),一般指磁盘损坏),一般指磁盘损坏n导致磁盘数据丢失,破坏导致磁盘数据丢失,破坏整个数据库整个数据库3、系统故障、系统故障n系统故障:软故障(系统故障:软故障(Soft Crash),由于),由于OS、DBMS软件问软件问题或断电等问题导致内存数据丢失,但磁盘数据仍在题或断电等问题导致内存数据丢失,但磁盘数据仍在n影响影响所有正在运行所有正在运行的事务,破坏事务状态,但不破坏整个的事

14、务,破坏事务状态,但不破坏整个数据库数据库4、数据库系统故障恢复策略、数据库系统故障恢复策略n目的目的n恢复恢复DB到一致状态到一致状态n基本原则基本原则n冗余(冗余(Redundancy)n实现方法实现方法n定期转储整个数据库定期转储整个数据库 n建立事务日志建立事务日志 (log)n通过备份和日志进行恢复通过备份和日志进行恢复4、数据库系统故障恢复策略、数据库系统故障恢复策略t0t1t2转储转储运行事务运行事务Crash登记日志文件登记日志文件重装副本重装副本利用日志文件进行恢复利用日志文件进行恢复继续运行事务继续运行事务登记日志文件登记日志文件介质故障恢复介质故障恢复系统故障和事务故障恢

15、复系统故障和事务故障恢复当发生故障时:当发生故障时:(1)若是介质故障,则首先重装副本)若是介质故障,则首先重装副本(2)利用日志进行事务故障恢复和系统故障恢复,一直恢复到故障发生点)利用日志进行事务故障恢复和系统故障恢复,一直恢复到故障发生点The recovery process四、四、Undo日志日志n事务日志记录了所有更新操作的具体细节事务日志记录了所有更新操作的具体细节nUndo日志、日志、Redo日志、日志、Undo/Redo日志日志n日志文件的登记严格按事务执行的时间次序日志文件的登记严格按事务执行的时间次序nUndo日志文件中的内容日志文件中的内容n事务的开始标记(事务的开始标

16、记()n事务的结束标记(事务的结束标记(或或)n事务的更新操作记录,一般包括以下内容事务的更新操作记录,一般包括以下内容n执行操作的事务标识执行操作的事务标识n操作对象操作对象n更新前值更新前值1、Undo日志规则日志规则n事务的每一个修改操作都生成一个日志记录事务的每一个修改操作都生成一个日志记录 n在在x被写到磁盘被写到磁盘之前之前,对应此修改的日志记录必须已被写到,对应此修改的日志记录必须已被写到磁盘上磁盘上n当事务的所有修改结果都已写入磁盘后,将当事务的所有修改结果都已写入磁盘后,将 日日志记录写到磁盘上志记录写到磁盘上Write Ahead Logging (WAL日志日志) 先写日

17、志先写日志先写日志先写日志(Write-Ahead Log)原则原则n在数据被写到磁盘之前,对应此修改的日志记录必须已被写在数据被写到磁盘之前,对应此修改的日志记录必须已被写到磁盘上到磁盘上先写日志先写日志设设T1将将A修改为修改为900时发生故障。设此时发生故障。设此时时900已写到数据库,但还未来得及写已写到数据库,但还未来得及写该日志记录到磁盘上。该日志记录到磁盘上。根据恢复策略,根据恢复策略,T1在恢复应在恢复应UNDO,但,但此时由于后写日志,此时由于后写日志,A的更新操作在日的更新操作在日志中没有记录,因此无法将志中没有记录,因此无法将A恢复到恢复到1000*如果先写日志,则即使没

18、有将如果先写日志,则即使没有将900写到写到数据库中,也只不过多执行一次数据库中,也只不过多执行一次UNDO操作,不会影响数据库的一致性。操作,不会影响数据库的一致性。后写日志后写日志1、Undo日志规则日志规则T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogLogInitial:A=1000B=2000将日志记将日志记录从缓冲录从缓冲区写到区写到Disk上上将缓冲区将缓冲区中中A的值的值写到写到Disk上上1、Undo日志规则

19、日志规则故障故障1T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogFail hereA:900B:2100A:1000B:2000MemoryDisk1、Undo日志规则日志规则故障故障2T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogFail hereA:900

20、B:2100A:900B:2000 MemoryDisk1、Undo日志规则日志规则故障故障3T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogFail hereA:900B:2100A:900B:2100 MemoryDisk1、Undo日志规则日志规则故障故障4T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput

21、(A);Output (B);Flush LogSuccess!MemoryA:900B:2100A:900B:2100 Disk2、基于、基于Undo日志的恢复日志的恢复t0t1t2转储转储运行事务运行事务Crash登记日志文件登记日志文件重装副本重装副本继续运行事务继续运行事务登记日志文件登记日志文件介质故障恢复介质故障恢复The recovery processRecovery HereDisk上的日志上的日志文件文件2、基于、基于Undo日志的恢复日志的恢复n从头从头扫描日志,找出所有没有扫描日志,找出所有没有或或的所有事务,放入一个事务的所有事务,放入一个事务列表列表L中中n从尾部从

22、尾部开始扫描日志记录开始扫描日志记录,如果如果T L,则,则n write (X, v)n output (X)nFor each T L donwrite to log2、基于、基于Undo日志的恢复日志的恢复故障故障1T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogFail hereA:900B:2100A:1000B:2000MemoryDisk无须恢复!无须恢复!2、基于、基于Undo日志的恢复日志的恢复故障故障2T1:

23、Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogFail hereA:900B:2100A:900B:2000 MemoryDiskWrite(B,2000)Output(B)Write(A,1000)Output(A)2、基于、基于Undo日志的恢复日志的恢复故障故障3T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput

24、 (A);Output (B);Flush LogFail hereA:900B:2100A:900B:2100 MemoryDisk如何恢复?如何恢复?2、基于、基于Undo日志的恢复日志的恢复故障故障4T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush LogSuccess!MemoryA:900B:2100A:900B:2100 Disk需要恢复吗?需要恢复吗?2、基于、基于Undo日志的恢复日志的恢复nWhat if failur

25、e during recovery?No problem!Just re-execute the recovery!Because each recovery has same effect!3、Undo日志总结日志总结n记录修改前的旧值记录修改前的旧值n写入写入到磁盘之前必须先将数据写入磁盘到磁盘之前必须先将数据写入磁盘n恢复时恢复时忽略已提交事务忽略已提交事务,只撤销未提交事务,只撤销未提交事务n若磁盘上的日志文件中某事务有若磁盘上的日志文件中某事务有,则肯定该,则肯定该事务已将所有数据都写回到磁盘了事务已将所有数据都写回到磁盘了五、五、Redo日志日志n在在x被写到磁盘之前,对应该修改的

26、被写到磁盘之前,对应该修改的Redo日志记录必须已被日志记录必须已被写到磁盘上写到磁盘上 (WAL)n在数据写回磁盘前在数据写回磁盘前先写先写日志记录日志记录n日志中的数据修改记录日志中的数据修改记录n - - Now v is the new value1、Redo日志规则日志规则T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);LogInitial:A=1000B=20001、Redo日志规则日志规则故障故障1T1:Read (A,t); t

27、t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Fail hereA:900B:2100A:1000B:2000BufferDisk1、Redo日志规则日志规则故障故障2T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Fail hereA:900B:2100A:1000B:2000 DiskBuffer1、Redo日志规则日志规则故

28、障故障3T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Fail hereA:900B:2100A:900B:2000 DiskBuffer1、Redo日志规则日志规则故障故障4T1:Read (A,t); t t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush LogOutput (A);Output (B);Fail hereA:900B:2100A:900B:2100 DiskB

29、uffer2、基于、基于Redo日志的恢复日志的恢复n从头从头扫描日志,找出所有有扫描日志,找出所有有的事务,放入一个的事务,放入一个事务事务列表列表L中中n从首部从首部开始扫描日志记录开始扫描日志记录,如果如果T L,则则n write (X, v)n output (X)nFor each T L donwrite to log2、基于、基于Redo日志的恢复日志的恢复n恢复的基础恢复的基础n没有没有记录的操作必定没有改写磁盘数据,因记录的操作必定没有改写磁盘数据,因此在恢复时可以不理会此在恢复时可以不理会nDiffer from Undo loggingn有有记录的结果可能还未写回磁盘,

30、因此在恢记录的结果可能还未写回磁盘,因此在恢复时要复时要RedonStill differ from Undo logging3、Undo vs. RedonUndo基于立即更新基于立即更新 (Immediately Update)nRedo基于延迟更新基于延迟更新 (Deferred Update)3、Undo vs. RedoT1:Read (A,t); t t 100;Write (A,t);Flush LogOutput (A); Read (B,t);t t + 100;Write (B,t);Flush LogOutput (B);Flush LogT2:Read (A,t); t

31、 t 100;Write (A,t);Read (B,t);t t + 100;Write (B,t);Flush Log Output (A); Output (B);立即更新日志立即更新日志(Undo log)延迟更新日志延迟更新日志(Redo log)More IOsBut less buffersMore buffersBut less IOs六、六、Undo/Redo日志日志n在在x被写到磁盘之前,对应该修改的日志记录必须已被写到被写到磁盘之前,对应该修改的日志记录必须已被写到磁盘上磁盘上 (WAL)n日志中的数据修改记录日志中的数据修改记录n - - v is the old va

32、lue, w is the new valuen可以立即更新,也可以延迟更新可以立即更新,也可以延迟更新1、基于、基于Undo/Redo日志的恢复日志的恢复n正向正向扫描日志,将扫描日志,将的事务放入的事务放入Redo列表列表中,将中,将没有结束的事务放入没有结束的事务放入Undo列表列表n反向反向扫描日志,对于扫描日志,对于,若若T在在Undo列表列表中,则中,则nWrite(x,v); Output(x)n正向正向扫描日志,对于扫描日志,对于,若若T在在Redo列表列表中,则中,则nWrite(x,w); Output(x)n对于对于Undo列表中的列表中的T,写入写入1、基于、基于Undo/Redo日志的恢复日志的恢复发生故障时的日志发生故障时的日志1.Undo列表列表 T3,T4; Redo T1,T22.UndoT4: D=1000T3: B=1900T3: C=30003.RedoT1:B=1900T2:A=9004.Write log1、基于、基于Undo/Redo日志的恢复日志的恢复n先先Undo后后Redo发生故障时的日志发生故障时的日志T1要要UNDO,T2要要REDO如果先如果先REDO,则,则A1100;然;然后在后在UNDO,A1000。不正确。不正确先先UNDO,A1000;然后;然后REDO,A11

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论