数据库管理之数据库的恢复

1、 数据库的恢复定义
       系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态,就是数据库的可恢复性。主要由DBMS的恢复管理子系统采取一系列措施保证在任何情况下保持食物的原子性、持久性,确保数据部丢失,不破坏。

2、 数据库恢复的策略

a)平时做好两件事,转储和建立日志

i. 周期地对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中
ii. 建立日志数据库

b) 一旦发生数据库故障,分两种情况处理

i.如果数据库未遭到物理性破坏,只是数据不一致,此时只要利用日志库撤销所有不可靠的修改,再利用重做功能,把数据库恢复到正确状态;
ii.如果数据库遭到物理性破坏,必须装入最近一次拷贝的数据库备份到新的磁盘,然后利用日志库执行重做已提交的事务,把数据库恢复。

3、 数据库的常见故障

a)事务故障(由系统完成)

i.可以预期的事务故障,即在程序中可以预先估计到的错误,解决方法:在事务代码中加入rollback语句
ii.非预期的事务故障,即在程序中发生的未估计到的错误,解决方法:由系统直接对事务执行撤销操作

b)系统故障(由系统完成),也称为软故障

i.引起系统停止运转随之要求重新启动的事件称为系统故障。
解决方法:重启之后对未完成事务做撤销处理,对已提交事务但更新还留在缓冲区的事务进行重做处理

c)介质故障(由DBA完成),也称为硬故障

i.在发生介质故障或遭受病毒破坏时,磁盘上的物理数据遭到毁灭性破坏。
解决方法:重装最近转储的后备副本到新的磁盘,使数据库恢复到转储时的一致状态,在日志中找出最近转储以后所有已提交的事务,对这些已提交的事务进行重做处理,将数据库恢复到某一时的一致状态。

4、 检查点技术
在DBS运行时,DBMS定时设置检查点,在检查点时候才真正做到把对DB的修改写到磁盘,并在日志文件上写入一条检查点记录。数据库中重做,撤销处理,实际上是采用检查点方法实现的,大多数DBMS都提供这种技术。一般DBMS产品自动实行检查点操作,无须人工干预。恢复算法:

a)根据日志文件建立事务重做队列和事务撤销队列

i. 从头扫描日志文件,找出故障中已提交的事务,标识为重做队列
ii.从头扫描日志文件,找出故障中未提交的事务,标识为撤销队列

b) 对重做队列进行REDO处理,对撤销队列进行UNDO处理

i.正向扫描日志文件,根据重做队列,对每个事务执行REDO
ii.反向扫描日志文件,根据撤销队列,对每个事务执行UNDO

猜你喜欢

转载自blog.csdn.net/xfcy1990/article/details/88912993