《数据库系统概论》- 课本理论整理07之数据库恢复技术

事务的基本概念

事务的ACID特性

【事务】是【恢复】和【并发控制】的基本单位。
保证事务ACID特性是事务管理的基本任务。

ACID特性遭到破坏的因素
  1. 多个事务并发运行时,不同事务的操作交叉执行 (必须保证多个事务交叉执行的时候不会对彼此产生影响)
  2. 事务在运行过程中被强行停止(必须保证被强行终止的事务对DB和其他事务不会产生影响)

数据库恢复概述

恢复子系统是DBMS的重要组成部分,占真个系统代码的10%以上,DB所采用的恢复技术是否有效对系统的可靠程序起到决定的作用。

DBS中故障的种类

1.事务内部的故障
BEGIN TRANSACTION
读取账户甲方余额BALANCE01;
BALANCE01 = BALANCE01 - AMOUNT; /*AMOUNT为转账金额 🍎 第一次更新*/
IF(BALANCE01 < 0)THEN
{
打印"金额不足,不能转账!" /*事务内部课程造成事务被回滚的情况*/
ROLLBACK; /*撤销刚才的修改,恢复事务*/
}
ELSE
{
读取账户乙的余额BALANCE02;
BALANCE02 = BALANCE02 + AMOUNT; /*🍎 第二次更新*/
COMMIT; /*提交事务*/
}

上述的两个更新操作要么全部完成要么全部不做,否则就会使数据处于不一致状态。

事务内部存在非预期的故障,无法由应用程序处理的。
eg: 运算溢出、并发事务发生死锁而被选中撤销该事务、违反了某些完整性限制而被终止等

事务故障即事务没有达到预期的终点(COMMIT或ROLLBACK) DB可能处于不正确状态。
恢复程序要在不影响其他事务运行的情况下,强行回滚该事务。
【事务撤销(UNDO)】 =》 撤销该事务已经作出的任何对DB的修改。

2.系统故障 - 软故障(soft crash)

【系统故障】=》造成系统停止运转的任何事件,使得系统要重新启动。
eg:
硬件错误(CPU故障)、OS故障、DBMS代码错误、系统断电等

将事务已提交的结果重新写入DB。所以系统重新启动后,恢复子系统除需要撤销所有未完成的事务外还要重做(REDO)所有已经提交的事务,以将DB恢复到一致状态。

3.介质故障 - 硬故障(hard crash)

硬故障是指外存故障eg: 磁盘损坏、磁头碰撞、瞬时强磁场干扰等

4.计算机病毒 - 一种人为的故障或破坏
总结

各类故障对DB的影响有两种可能性:

  1. DB本身被破坏
  2. DB没有被破坏,但数据可能不正确(事务的运行被非正常终止造成的)

恢复的方法: 冗余

数据库中任何一部分【被破坏或不正确的数据】可以根据存储在系统别处的【冗余数据】来重建.

恢复的实现技术

恢复机制设计的两个关键问题是: 【1.如何建立冗余数据】【2.如何利用这些冗余数据实施数据库恢复】

建立冗余数据常用技术【1.数据转储】【2.登记日志文件(logging)】

数据转储分类
  • 动态海量转储
  • 动态增量转储
  • 静态海量转储
  • 静态增量转储

登记日志文件

恢复策略

事务故障恢复

【事务故障】事务在运行到终止点前被终止(此时恢复子系统利用日志文件撤销(UNDO)此事务对DB已经做出的修改)。
事务故障恢复由系统自动完成,对用户透明。

系统故障恢复

系统故障造成DB不一致状态的原因两个

  1. 未完成事务对DB的更新可能已写入DB(不该做的做了)
  2. 已提交事务对DB的更新可能还留在缓冲区每来得及写入DB(该做的没做
介质故障恢复

发生介质故障后,磁盘上的物理数据和日志文件被破坏,恢复方法是重装DB然后重做已经完成的事务。

数据库镜像 - 主从数据库(也是目前企业级开发数据库后备处理通用措施)

介质故障是对系统影响最为严重的一种故障。
随着磁盘容量越来越大,价格越来越便宜,DBMS提供DB Mirror功能用于数据库恢复

自动将整个DB或其中的关键数据复制到 ====》 另一个磁盘上,每当主DB更新时,DBMS自动把更新后的数据复制过去,由DBMS自动保证Data和主数据库的一致性

在没有出现故障的时候,数据库镜像可以提供并发操作,即当一个用户对数据加排他锁修改数据的时候,其他用户可以读镜像数据库上的数据而不必等待该用户释放锁。

在实际实施中只选择对关键数据和日志文件进行镜像处理,而不是面对整个DB。

小结

  • 数据库最基本要求: 保证数据一致性
  • 事务是DB的逻辑工作单位
  • 只要DBMS保证DB的【原子性 - 要么全成功要么全失败】【一致性 - 从一个一致性转到另一个一致性状态】【隔离性 - 事务之间相互独立】【持久性 - 事务对DB的更改是持久化的】就能保证DB处于一致状态.
  • 为了保证事务的ACID properties, DBMS必须对事务故障、系统故障和介质故障进行恢复。
  • 数据转储和登记日志文件恢复中最常实用的技术。
  • 恢复的基本原理: 利用存储在【后备副本】、【日志文件】和【数据库镜像中的冗余数据】来重建DB
  • 【事务】不仅是【恢复的基本单位】,也是【并发控制的基本单位】。
  • 为了保证事务的【隔离性和一致性】,DBMS需要进行并发操作进行控制。
posted @   Felix_Openmind  阅读(590)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示