高级数据库系统(Advanced Database System)之:故障恢复(Fault Recovery):事务故障、系统故障、介质故障

数据库的故障分类

事务故障

  • 某个程序自身运行引起的故障
  • 只影响当前事务本身

系统故障

  • 由于掉电、非正常关机等引起的故障
  • 影响正在运行的事务以及数据库缓冲区,数据库缓冲区将涉及到正在运行和已经运行的事务
  • 会造成数据库缓冲区和磁盘上的数据的不一致,因为数据库的缓冲区是易失的。
  • 在这里插入图片描述

介质故障

  • 由于介质损坏引起的故障
  • 影响是全面的,既影响内存中的数据,又影响介质中的数据

故障恢复的宏观思路

  • 把当前数据库的不正确状态恢复到哦已知为正确的某一个状态
  • 保持事务的 原子性持久性

事务故障恢复

事务故障的恢复可以通过**重做事务(Redo)撤销事务(Undo)**来恢复。重做事务可以保证事务的持久性,而撤销事务则能够消除未提交事务的影响。

系统故障恢复

  • 要维护运行日志
  • 通过运行日志来完成故障的恢复

运行日志(System log)

在这里插入图片描述
在这里插入图片描述

  • 因为运行日志可以直接通过日志缓冲 log buffer 直接存到磁盘介质上,而且对于故障恢复有很大的作用,因此,必须在进行读写操作之前先运行日志。写日志成功后再与数据库缓冲区进行信息交换

运行日志进行故障恢复的细节

在这里插入图片描述

  • 根据日志从开始点按照日志的顺序运行日志记录的语句和事务直到故障点
  • 如果发生故障点处的事务未完成,那么这个事务将会被撤销
  • 但由于日志量很大,不可能永远都从日志的起点开始恢复。因此衍生出了 checkpoint 检查点概念
Checkpoint 检查点

在这里插入图片描述

  • 系统定期设置检查点
  • 在检查点强制内存将 buffer 缓冲区中的内容写入磁盘,保持一致
  • 检查点保证在检查点以及之前的内存中的数据都与磁盘中保持一致
  • 故障发生时,检查点之前的数据不需要恢复
  • 检查点之后结束或发生的事务需要依据日志进行恢复。故障点发生前的事务依照日志重做,故障点当时未完成的事务撤销。

介质故障恢复

  • 采用 RAID 技术,即磁盘的冗余阵列在创建数据库的时候就保证其可靠性
  • 使用备份(copy)
    在这里插入图片描述

转储点(DP)dump point

  • 备份每次都是把数据库内容存到另一个磁盘上
  • 那么隔多久存一次,这个物理备份的频率就尤为重要
  • 转储点,就是上一次物理备份备份到的节点
    在这里插入图片描述

故障恢复宏观思路总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值