数据库恢复技术

数据库恢复是指通过技术手段,将保存在数据库中因数据库故障丢失的电子数据进行抢救和恢复的技术。

数据库故障

数据库发生故障一般分为三种情况:事务内部故障、系统故障、介质故障。

1.事务内部故障

事务操作要么全部完成,要么全部不做。如果事务的操作不能完全完成,则发生回滚。

  1. 运算溢出

  2. 并发事务发生死锁而被选中撤销该事务

  3. 违反了某些完整性限制等

处理方法

撤销事务(UNDO)

2.系统故障

又称软故障

指造成数据库系统停止运转的任何事件,使得数据库系统要重新启动

常见原因

  1. 特定类型的硬件错误(如CPU故障)

  2. 操作系统故障

  3. DBMS代码错误

  4. 系统断电

处理方法

事务未提交时:撤销未完成事务(UNDO)

事务提交,但缓冲区的数据未完全写人磁盘中:重新执行所有已提交事务(REDO)

3.介质故障

又称硬故障,指外存故障

常见原因

  1. 磁盘损坏

  2. 磁头碰撞

  3. 操作系统的某种潜在错误

  4. 瞬时强磁场干扰

处理方法

装入数据库发生介质故障前某个时刻的数据副本

重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库

数据库恢复技术

基本原理

冗余

利用存储在系统其他地方的冗余数据来重建数据库中已被破坏或者不正确的那部分数据

建立冗余的方法

1.数据转储

转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程,备用的数据成为后备副本或后援副本

2.登记日志文件

记录事务对数据库的更新操作文件

数据库恢复方法

1.事务故障恢复

UNDO

2.系统故障恢复

UNDO+REDO

3.介质故障恢复

重装备份并恢复到一致性状态 + REDO