数据库故障恢复技术

故障的种类

  1. 事务故障
    逻辑故障,例如:除以0;
    余额不允许为负。

  2. 系统崩溃故障
    停电、硬件故障,蓝屏死机故障。

  3. 磁盘故障
    分为数据库磁盘故障和日志磁盘故障。

  4. 灾难故障
    例如:地震,火灾等不可抗因素。

故障的恢复方法

1、事务故障的恢复:撤消事务(UNDO)

具体方法:

(1). 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
(2). 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值” 写入数据库。
插入操作, “更新前的值”为空,则相当于做删除操作
删除操作,“更新后的值”为空,则相当于做插入操作
若是修改操作,则相当于用修改前值代替修改后值
(3). 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
(4). 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

2、系统崩溃故障的恢复:撤消事务(UNDO)+重做事务(REDO)

发生系统故障时,事务未提交
恢复策略:强行撤消(UNDO)所有未完成事务
发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上。
恢复策略:重做(REDO)所有已提交的事务

具体方法:

重启数据库管理系统;从日志磁盘读取日志文件;反向扫描日志,也就是从日志文件的结束位置开始后向扫描。当发现一个事务在日志记录中没有 记录时,执行undo( Ti) 操作,使用旧值恢复数据项: 然后从日志文件的开始位置顺向扫描。对日志记录中含有的事务,执行redo( Ti) 操作,使用新值恢复数据项;

3、磁盘(介质)故障的恢复

数据库磁盘故障,把dump的备份数据库文件拷贝到新的数据库磁盘上;从日志文件的末尾逆向扫描直至记录,再顺向扫描日志记录,对有日志记录的事务做redo(Ti)操作。

日志磁盘故障:不再接收事务请求,让当前的所有活动事务执行完毕;输出数据库缓冲区中的缓冲数据到数据库磁盘中(即checkpoint);执行Dump操作,把磁盘中的数据库文件拷贝到另一个磁盘上;更换日志磁盘。

4、灾难故障的恢复:远程备份

猜你喜欢

转载自blog.csdn.net/qq_33394088/article/details/80080684
今日推荐