数据库恢复技术

常用技术是数据转储和登记日志文件

1. 数据转储

转储即数据库管理员定期的将整个数据库复制到磁带,磁盘及其他存储介质上保存起来的过程。这些备用数据称为后备副本,当数据库遭到破坏后将后备腐败重新装入,但这样只能恢复到转储是的状态,要想恢复到故障发生时的状态,必须重新运行转储之后所有更新事务。
转储时十分耗费时间和资源的,不能频繁进行
转储分为动态转储和静态转储

  • 静态转储
    在系统中无运行时进行转储操作,这样得到的一定是一个数据一致性的副本
  • 动态转储
    转储期间允许对数据库进行修改,,但是不能保证一致性,,所以要把转储期间事务对数据的修改记录下来,建立日志文件,这样后备副本+日志文件就可以恢复到某一时刻的正确状态。

2. 登记日志文件

日志文件是用来记录事务对数据库的更新操作的。
日志文件需要记录的内容:各个事务的开始标记(BEGIN),结束标记(COMMIT或ROLLBACK),所有更新操作。这三者构成一个日志记录。
每个日志记录的内容主要包括:事务标识(哪个事务),操作类型(插入,删除活修改),操作对象,旧值(对于插入,此项是空值),新值(对于删除,也为空值)

登记日志文件的原则:

  • 登记的次序严格按照并发事务执行的时间次序
  • 必须先写日志文件后写数据库
2.1 恢复策略

先介绍一下REDO和UNDO
REDO(重做):将已提交的但未写入磁盘的事务执行的操作重做一遍
UNDO(撤销):将已经修改数据库但未提交的事务回滚,撤销对数据库的修改

事务故障的恢复

利用日志文件进行UNDO,步骤:
(1) 反向扫描日志文件,查找该事务的更新操作
(2)对这些操作执行逆操作,即将更新前的旧值写入数据库,如果是插入则做删除,如果是删除则做插入
(3)继续扫描,查找其他更新操作并做(2)
(4)直至读到开始标记,事务故障恢复就完成了

系统故障恢复

步骤:
(1)正向扫描日志文件,找出已经提交的事务(即有BRGIN也有COMMIT记录),将其标识记入重做队列,同时找出未提交的事务(只有BEGIN,没有CONNIT)将其标识记入撤销队列
(2)对撤销队列中的各个事务进行撤销处理,步骤:反向扫描日志文件,对每个撤销事务的更新操作执行逆操作
(3)对重做队列中的每个事务进行重做处理,步骤:正向扫描日志文件,重新执行每个重做事务在日志文件登记的操作

介质故障恢复

如磁盘上的物理数据和日志文件被破坏,恢复方法是重装数据库,然后重做已完成的事务
步骤:
(1) 装入最新的数据库后备副本
(2) 装入相应的日志文件副本,然后重做已提交的事务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值