【学习笔记之数据库系统工程师】数据库系统故障与恢复

故障

事务故障:事务故障是单独一个事务出问题而不能执行下去,并不影响其他事务的执行;由系统自动完成,对用户是透明的。
系统故障:系统故障是故障导致系统重启,当前运行中的事务及刚刚提交的事务会导致数据库不一致;
介质故障:介质故障则是数据库文件的存储介质如硬盘发生故障导致数据丢失。是指外存故障,例如磁盘损坏、磁头碰撞,瞬时强磁场干扰等


故障恢复方法

DBMS对不同类别的故障使用不同的恢复方法
事务故障和系统故障由DBMS来完成事务级别的恢复,即根据日志文件对未完成的事务进行UNDO操作,对已完成的事务进行REDO操作,使数据库恢复到故障前一致性状态;

事务故障恢复:由系统自动完成,对用户是透明的。
恢复过程
DBMS执行恢复操作的步骤如下:

反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。

对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

继续反向扫描日志文件,做同样处理。

如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。


系统故障恢复。系统故障可能会造成数据库处于不一致性状态:一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。因此,恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。
恢复过程
正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。

对撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是,正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作,即将日志记录中“更新后的值”写入数据库。


介质故障恢复。介质故障是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。需要DBA介入,装载备份文件后交由DBMS进行恢复。介质故障是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。
恢复过程
①装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
②转入相应的日志文件副本,重做已完成的事务

介质故障的恢复需要DBA的介入,具体的恢复操作仍由DBMS完成。
恢复过程
①DBA只需要重装最近转储的数据库副本和有关的各日志文件副本。
②然后执行系统提供的恢复命令。


恢复

故障导致服务器重启,故障时正在执行的事务的原子性被破坏,即事务没有执行完,其对数据库的部分更新可能已经写入硬盘上的数据库文件,重启后这部分更新使得数据库处于不一致性状态,应对其进行处理,撤销故障时未完成的事务对数据库的更新,使数据库还原到未完成的事务执行前的状态,相当于这些事务没有执行。

这种恢复操作借助于日志文件来完成。日志按照时间顺序记录了所有事务对数据库的更新操作,而且在对数据库的更新之前已被写入硬盘。可以逆向扫描日志记录,找出未完成的事务,将其对数据库的修改还原,称为Undo操作

故障发生时已经完成提交的事务,对其数据库的修改可能还在内存中的I/O缓冲区中,没来得及写入硬盘,重启后这部分修改会丢失,破坏了事务的持久性。同样借助于日志文件,找到故障前已完成的事务,将其对数据库的更新重新做一遍,即可完成对应事务的更新操作。这一操作称为Redo操作

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IsQiya

很庆幸我的文章对您有帮助

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

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

打赏作者

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

抵扣说明:

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

余额充值