DBMS笔记 08 数据库恢复技术
数据库恢复技术通过数据转储和日志文件等冗余机制,在事务、系统或介质故障发生后恢复数据一致性与完整性。 其核心是基于日志的 UNDO 与 REDO 操作,并遵循“先写日志再写数据库”的原则,实现已提交事务重做、未提交事务回滚。
DBMS笔记 08 数据库恢复技术
第八章 数据库恢复技术
一、数据库故障分类
- 事务故障
- 事务执行中断导致未完成。
- 例如:输入错误、死锁回滚、程序异常。
- 处理:ROLLBACK 撤销事务。
- 系统故障
- DBMS 停止运行(硬件故障、断电、操作系统崩溃等)。
- 内存中数据丢失,但外存数据未损坏。
- 介质故障
- 存储介质损坏导致数据丢失(磁盘损坏)。
- 必须用备份恢复。
- 计算机病毒
- 破坏数据完整性或可用性。
二、数据库恢复的基本原理
- 冗余:额外保存数据库副本(如转储、日志),出故障后用冗余数据恢复。
- 两个关键技术:
- 数据转储(静态/动态,全量/增量)
- 日志文件(记录操作,支持回滚和重做)
三、数据转储
- 静态转储
- 数据库停止运行时备份。
- 一致性强,但效率低。
- 动态转储
- 数据库运行时也可备份。
- 边运行边存储,需要结合日志保证一致性。
- 转储方式
- 海量转储:每次转储整个数据库。
- 增量转储:只转储上次转储后更新过的数据。
四、日志文件
- 作用:记录事务对数据库的所有更新操作,供恢复时使用。
- 记录内容:
- 事务标识(BEGIN / COMMIT / ROLLBACK)
- 操作对象(插入、删除、修改)
- 修改前的值(旧值)
- 修改后的值(新值)
- 写入规则:
- 日志必须 先写日志再写数据库(Write-Ahead Logging, WAL)。
- 保证故障时可以回滚或重做。
五、恢复策略
- 事务故障恢复(UNDO)
- 撤销未完成事务,回滚到开始前状态。
- 系统故障恢复
- 根据日志文件 重做已提交事务,撤销未提交事务。
- 介质故障恢复
- 结合备份数据 + 日志文件进行恢复。
- 必须重装备份,然后按日志重做。
六、重点
- 日志文件作用 → 数据恢复(不是完整性约束)。
- 事务是数据库工作的基本单位 → 要么全做要么全不做。
- 冗余技术:转储 & 日志文件。
- 转储方式:静态/动态 + 全量/增量。
- 恢复分类:事务恢复、系统恢复、介质恢复。
- 写日志顺序:先写日志再写数据库。
- 易错点:
- “事务故障影响数据库物理状态” → 错(只是逻辑未完成)。
- “系统故障导致数据库部分物理损坏” → 错(内存丢失,外存正常)。
- “介质故障只能用转储 + 日志恢复” → 对。
七、速记
- 故障分类:事务 / 系统 / 介质 / 病毒。
- 两大技术:转储(静态/动态,全量/增量)、日志文件(记录操作)。
- 恢复方法:UNDO 回滚未提交,REDO 重做已提交。
- 规则:先写日志,再写数据库。
- 三类恢复:事务恢复(回滚)、系统恢复(撤销+重做)、介质恢复(备份+日志)。
本文由作者按照 CC BY-NC 4.0. 进行授权
...

Comments
评论区