5 数据库恢复技术

一、事务

1.事务的定义:

          用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

2.事物的特性:

          原子性:Atomicity一个事务的操作要么全做,要么全不做——恢复机制

          一致性:Consistency使数据库从一个一致性状态变成另一个一致性状态——原子性、隔离性、持久性

          隔离性:Isolation一个事务的执行不被其他事务干扰——并发控制机制——引申出事务的隔离级别,见java数据库管理

          持久性:Durability一个事务一旦提交,它对数据库的改变应该是永久性的,接下来的其他操作或故障不应该对其执行结果有影响——恢复机制

3.事务的状态

  • 事务的开始begin trans
  • 事务的提交commits
  • 事务的回滚 rollback
  • 事务的结束 end trans

二、故障种类

  1.事务内部的故障

  2.系统故障(软故障)

  3.介质故障(硬故障)

  4.计算机病毒

           数据库具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能——数据库的恢复

三、恢复的实现技术

   1.数据转储

   DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。

    (1)转储状态

         静态转储:在系统中无运行事务时进行的转储操作;

         动态转储:转储期间允许对数据库进行存取或修改

   (2)转储方式

         海量转储:每次转储全部数据

         增量转储:每次只转储上一次转储后更新过的数据

   2.登记日志文件

                        (记录对数据库数据的修改,保护数据库以防故障发生以及恢复数据时使用)

      必须先写日志文件,后写数据库

日志文件的特点

  • 每一个数据库至少包含两个日志文件组,每个日志文件组包含至少两个日志文件
  • 日志文件组以循环的方式进行写操作
  • 每一个日志文件成员对应一个物理文件。

如果数据库日志满了,会出现什么情况?

只能执行查询等数据库读操作,不能执行更改、备份等写操作。原因是任何写操作都要记录日志。

四、恢复策略

   1、事务故障的恢复

  • 反向扫描日志文件,查找该事务的更新操作;
  • 对事务的更新操作做逆操作

   2、系统故障的恢复

  • 正向扫描日志文件,找出故障发生前已经提交的事务
  • 将已提交事务的标记计入重做队列
  • 同事找出故障发生时尚未完成的事务,将其事务标记记入撤销队列
  • 对撤销队列中的各个事务进行撤销处理undo
  • 对重做队列中的各个事务进行重做处理redo

   3、介质故障的恢复

  • 装入最新的数据库副本
  • 装入相应的日志文件副本,重做已完成的事务 
原文地址:https://www.cnblogs.com/xiaoxiaohui2015/p/5802796.html