文章

DBMS笔记 08 数据库恢复技术

数据库恢复技术通过数据转储和日志文件等冗余机制,在事务、系统或介质故障发生后恢复数据一致性与完整性。 其核心是基于日志的 UNDO 与 REDO 操作,并遵循“先写日志再写数据库”的原则,实现已提交事务重做、未提交事务回滚。

DBMS笔记 08 数据库恢复技术

第八章 数据库恢复技术

一、数据库故障分类

  1. 事务故障
    • 事务执行中断导致未完成。
    • 例如:输入错误、死锁回滚、程序异常。
    • 处理:ROLLBACK 撤销事务。
  2. 系统故障
    • DBMS 停止运行(硬件故障、断电、操作系统崩溃等)。
    • 内存中数据丢失,但外存数据未损坏。
  3. 介质故障
    • 存储介质损坏导致数据丢失(磁盘损坏)。
    • 必须用备份恢复。
  4. 计算机病毒
    • 破坏数据完整性或可用性。

二、数据库恢复的基本原理

  • 冗余:额外保存数据库副本(如转储、日志),出故障后用冗余数据恢复。
  • 两个关键技术:
    1. 数据转储(静态/动态,全量/增量)
    2. 日志文件(记录操作,支持回滚和重做)

三、数据转储

  1. 静态转储
    • 数据库停止运行时备份。
    • 一致性强,但效率低。
  2. 动态转储
    • 数据库运行时也可备份。
    • 边运行边存储,需要结合日志保证一致性。
  3. 转储方式
    • 海量转储:每次转储整个数据库。
    • 增量转储:只转储上次转储后更新过的数据。

四、日志文件

  • 作用:记录事务对数据库的所有更新操作,供恢复时使用。
  • 记录内容
    • 事务标识(BEGIN / COMMIT / ROLLBACK)
    • 操作对象(插入、删除、修改)
    • 修改前的值(旧值)
    • 修改后的值(新值)
  • 写入规则
    • 日志必须 先写日志再写数据库(Write-Ahead Logging, WAL)。
    • 保证故障时可以回滚或重做。

五、恢复策略

  1. 事务故障恢复(UNDO)
    • 撤销未完成事务,回滚到开始前状态。
  2. 系统故障恢复
    • 根据日志文件 重做已提交事务,撤销未提交事务。
  3. 介质故障恢复
    • 结合备份数据 + 日志文件进行恢复。
    • 必须重装备份,然后按日志重做。

六、重点

  1. 日志文件作用数据恢复(不是完整性约束)。
  2. 事务是数据库工作的基本单位 → 要么全做要么全不做。
  3. 冗余技术:转储 & 日志文件。
  4. 转储方式:静态/动态 + 全量/增量。
  5. 恢复分类:事务恢复、系统恢复、介质恢复。
  6. 写日志顺序先写日志再写数据库
  7. 易错点
    • “事务故障影响数据库物理状态” → (只是逻辑未完成)。
    • “系统故障导致数据库部分物理损坏” → (内存丢失,外存正常)。
    • “介质故障只能用转储 + 日志恢复” →

七、速记

  • 故障分类:事务 / 系统 / 介质 / 病毒。
  • 两大技术:转储(静态/动态,全量/增量)、日志文件(记录操作)。
  • 恢复方法:UNDO 回滚未提交,REDO 重做已提交。
  • 规则:先写日志,再写数据库。
  • 三类恢复:事务恢复(回滚)、系统恢复(撤销+重做)、介质恢复(备份+日志)。
本文由作者按照 CC BY-NC 4.0. 进行授权
...

Comments

评论区

碎片之中

正在加载中...