思维导图:
10.4 恢复的实现技术
1. 恢复机制的关键问题
- 冗余数据建立:如何创建额外的数据备份以防数据丢失。
- 利用冗余数据进行恢复:如何使用这些备份数据来恢复数据库到特定状态。
2. 数据转储 (Data Dumping)
- 基本概念:定期将整个数据库复制到其他存储介质上。
- 后备副本:转储得到的数据备份,用于数据库被破坏后的恢复。
- 转储类型:
- 静态转储:在无事务运行时进行,保证数据一致性。
- 动态转储:转储期间允许数据库访问和修改,提高了数据库的可用性但可能导致数据不一致。
3. 转储方式的分类
- 海量转储:每次转储整个数据库,适合于小型或事务处理不频繁的数据库。
- 增量转储:仅转储自上次转储以来已更新的数据,适合大型或事务频繁的数据库。
- 组合方式:动态海量转储、动态增量转储、静态海量转储和静态增量转储。
4. 登记日志文件 (Logging)
- 作用:记录事务对数据库的所有修改,用于恢复操作。
- 重要性:在动态转储中尤其关键,因为它能记录转储期间发生的所有数据变更。
注意点
- 理解不同转储方式的优劣:识别不同转储方式的适用场景及其优缺点。
- 转储与日志记录的结合使用:理解如何结合数据转储和日志文件来有效恢复数据库。
- 转储频率的决定:根据数据库的使用情况和需求来确定合适的转储周期。
10.4.2 登记日志文件
1. 日志文件的格式和内容



- 格式分类:
- 记录为单位:包含事务的开始和结束标记,以及所有更新操作。
- 数据块为单位:包含事务标识和被更新的数据块。
- 记录内容:
- 事务标识:标明属于哪个事务。
- 操作类型:插入、删除或修改。
- 操作对象:记录内部标识。
- 旧值和新值:更新前后的数据值。
2. 日志文件的作用
- 故障恢复:用于事务故障和系统故障的恢复。
- 与转储结合:在动态转储中,结合后备副本和日志文件实现有效恢复。
- 重做与撤销:用于重做已完成的事务和撤销未完成的事务,特别是在静态转储方式中。
3. 登记日志文件的原则
- 写入顺序:严格按照并发事务执行的时间顺序记录。
- 先写日志后写数据库:确保在发生故障时,可以根据日志记录来恢复数据库。
注意点
- 理解日志文件格式的差异:区分记录为单位和数据块为单位的日志文件格式及其应用。
- 日志文件在恢复中的关键角色:强调日志文件在数据库恢复过程中的重要性,尤其是在处理事务失败和系统崩溃时。
- 先写日志原则的重要性:理解为什么必须先记录日志后更新数据库,以保证数据库的可恢复性。
总结:
重点
- 日志文件格式:分为以记录为单位和以数据块为单位的两种主要格式。
- 日志记录内容:包括事务标识、操作类型、操作对象以及更新前后的数据值。
- 日志文件的作用:关键于事务故障恢复和系统故障恢复,以及配合数据转储进行介质故障恢复。
- 登记原则:遵循严格的写入顺序,并且必须先写日志文件再更新数据库。
难点
- 理解不同日志文件格式的适用场景:识别记录为单位与数据块为单位日志文件的使用情境及其优劣。
- 日志文件的恢复机制:理解日志文件如何在不同类型的故障恢复中发挥作用,特别是在复杂的故障场景中。
- 先写日志原则的逻辑:理解为何先写日志文件再进行数据库更新对保证数据一致性和可恢复性至关重要。
易错点
- 混淆日志文件格式:可能会误解两种不同日志文件格式的特点和适用条件。
- 忽略日志记录的重要性:在数据库操作中可能会忽视日志文件的关键作用,特别是在故障恢复时。
- 违反日志记录原则:在实际操作中可能会忽略“先写日志后写数据库”的原则,从而增加数据恢复的复杂性和风险。