恢复的基本原则和实现方法 基本原则:“冗余”,即数据库重复存储。 具体实现方法 平时做好两件事:转储和建立日志 周期地(比如一天一次)对整个数据库进行拷贝,转储到 另一个磁盘或磁带一类存储介质中。 建立日志数据库。记录事务的开始、结束及数据每一次插 入、删除和修改前后的值,并写到“日志”库中。 旦发生数据库故障,分两种情况进行处理 如果数据库已被破坏,则装入1ast数据库备份,再利用日 志库将这两个数据库状态之间的所有更新重新做一遍。 如果数据库未被破坏,但某些数据不可靠,则撤消所有不 可靠的修改,把数据库恢复到正确的状态。 21
21 恢复的基本原则和实现方法 ◼ 基本原则 : “冗余”,即数据库重复存储。 ◼ 具体实现方法 ◼ 平时做好两件事:转储和建立日志 ◼ 周期地(比如一天一次)对整个数据库进行拷贝,转储到 另一个磁盘或磁带一类存储介质中。 ◼ 建立日志数据库。记录事务的开始、结束及数据每一次插 入、删除和修改前后的值,并写到“日志”库中。 ◼ 一旦发生数据库故障,分两种情况进行处理 ◼ 如果数据库已被破坏,则装入last数据库备份,再利用日 志库将这两个数据库状态之间的所有更新重新做一遍。 ◼ 如果数据库未被破坏,但某些数据不可靠,则撤消所有不 可靠的修改,把数据库恢复到正确的状态
故障类型和恢复方法 事务故障 可以预期的事务故障,如存款余额透支等 非预期事务故障,如运算溢出、数据错误、 死锁等 系统故障 硬件故障、软件错误或掉电等等 介质故障(硬故障) 磁盘物理故障或遭受病毒破坏
22 故障类型和恢复方法 ◼ 事务故障 ◼ 可以预期的事务故障,如存款余额透支等 ◼ 非预期事务故障,如运算溢出、数据错误、 死锁等 ◼ 系统故障 硬件故障、软件错误或掉电等等 ◼ 介质故障(硬故障) 磁盘物理故障或遭受病毒破坏
检査点技术(1) 什么是检查点方法 事务检查点故障点检查点 检査点类似于数据库的快 照,包括以下三步 T1 T2 H t 写“检查点开始“标识 将 transaction table和 T3 dirty table的内容写入log T4 更新最新的检查点的信息 T5 非 fuzzy的检查点 检查点方法的恢复算法 根帮鼠卖件娑紋事务1不必恢复; 对重做队列中的事务进事务T2和事务14必须重做(RED) 列中的事务进行D0事务T3和事务T必须撤消INDO) 理
23 检查点技术(1) ◼ 什么是检查点方法 ◼ 检查点类似于数据库的快 照,包括以下三步 ◼ 写“检查点开始“标识 ◼ 将transaction table和 dirty table的内容写入log ◼ 更新最新的检查点的信息 ◼ 非fuzzy的检查点 ◼ 检查点方法的恢复算法 ◼ 根据日志文件建立事务 重做队列和事务撤销队 列 ◼ 对重做队列中的事务进 行REDO处理,对撤消队 列中的事务进行UNDO处 理 事务T1不必恢复; 事务T2和事务T4必须重做(REDO); 事务T3和事务T5必须撤消(UNDO)。 事务 故障点 检查点 t 检查点 T1 T3 T2 T5 T4
日志 日志(LoG) 日志也称为 trailejournal 每条日志记录有一个d称为 log sequence number(LSN)。日志记 录顺序地存放在日志文件中,可以很快地访问到 日志记录的操作信息 对页的修改、Comm信息、 abort信息、end信息、对 updat的undo 信息 每个日志记录包括 prevLsN:该事务的前一个操作 Transi:事务号 Type 每条记录还包括 pageID, length, offset:修改的数据所在的位置 Before-image, after- mage:修改的内容
日志 ◼ 日志(LOG) ◼ 日志也称为trail或journal ◼ 每条日志记录有一个id,称为log sequence number(LSN)。日志记 录顺序地存放在日志文件中,可以很快地访问到 ◼ 日志记录的操作信息 ◼ 对页的修改、Commit信息、Abort信息、end信息、对updat的undo 信息 ◼ 每个日志记录包括 ◼ prevLSN:该事务的前一个操作 ◼ Transid:事务号 ◼ Type ◼ 每条记录还包括 ◼ pageID,length,offset:修改的数据所在的位置 ◼ Before-image,after-image:修改的内容
日 补偿日志记录 补偿日志记录记录了在Undo过程中对数据库进行的修 改 通过 prevLsN可以获得下一个需要进行undo的操作 Undo操作不可能被再次undo 其他的同恢复有关的数据结构 Transaction table:记录了每个活跃的事务在日志中的 最后一条记录 Dirty page table:记录了所有的脏的页,以及导致该页 为脏的第一个操作
日志 ◼ 补偿日志记录 ◼ 补偿日志记录记录了在Undo过程中对数据库进行的修 改 ◼ 通过prevLSN可以获得下一个需要进行undo的操作 ◼ Undo操作不可能被再次undo ◼ 其他的同恢复有关的数据结构 ◼ Transaction table:记录了每个活跃的事务在日志中的 最后一条记录 ◼ Dirty page table:记录了所有的脏的页,以及导致该页 为脏的第一个操作