- 数据库恢复技术
一:事务的基本概念
- 事务:事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务和程序是两个概念
在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序
一个程序通常包含多个事务。事务是恢复和并发控制的基本单位
2.事务的ACID特性
原子性(Atomicity):事务是数据库的逻辑工作单位。事务中包括的诸操作要么都做,要么都不做
一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性状态:数据库中只包含成功事务提交的结果。不一致状态:数据库系统运行中发生故障,有些事务尚未完成就被迫中断;这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态
隔离性(Isolation):一个事务的执行不能被其他事务干扰。一个事务内部的操作及使用的数据对其他并发事务是隔离的。并发执行的各个事务之间不能互相干扰
持续性:持续性也称永久性(Permanence)。一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
保证事务ACID特性是事务处理的任务,破坏事务ACID特性的因素
(1) 多个事务并行运行时,不同事务的操作交叉执行数据库管理系统必须保证多个事务的交叉运行不影响这些事务的隔离性
(2)事务在运行过程中被强行停止数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响
二:数据库恢复概述
- 故障是不可避免的:计算机硬件故障;软件的错误;操作员的失误;恶意的破坏。
- 故障的影响:运行事务非正常中断,影响数据库中数据的正确性;破坏数据库,全部或部分丢失数据。
- 数据库的恢复:数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复管理系统对故障的对策;恢复子系统是数据库管理系统的一个重要组成部分 ;恢复技术是衡量系统优劣的重要指标
三:故障的种类
1.事务内部的故障:有的是可以通过事务程序本身发现的;有的是非预期的,不能由事务程序处理的。
2.系统故障:称为软故障,是指造成系统停止运转的任何事件,使得
系统要重新启动。
整个系统的正常运行突然被破坏;所有正在运行的事务都非正常终止
不破坏数据库;内存中数据库缓冲区的信息全部丢失;特定类型的硬件错误(如CPU故障);操作系统故障;数据库管理系统代码错误;系统断电。
3.介质故障:称为硬故障,指外存故障。
磁盘损坏;磁头碰撞;瞬时强磁场干扰。
介质故障破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务
介质故障比前两类故障的可能性小得多,但破坏性大得多
4.计算机病毒:种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序
可以繁殖和传播,造成对计算机系统包括数据库的危害
故障小结:各类故障,对数据库的影响有两种可能性
一是数据库本身被破坏;二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。
- 恢复:
恢复操作的基本原理:冗余。利用存储在系统别处的冗余数据来重建数据库中已被破坏或不正确的那部分数据
恢复的实现技术:复杂。一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上
四:恢复的实现技术:
恢复机制涉及的关键问题
如何建立冗余数据(数据转储(backup);登记日志文件(logging))
如何利用这些冗余数据实施数据库恢复
- 数据转储
什么是数据转储?转储是指数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。备用的数据文本称为后备副本(backup)或后援副本。数据库遭到破坏后可以将后备副本重新装入;重装后备副本只能将数据库恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。
2.转储方法:静态转储与动态转储;海量转储与增量转储;转储方法小结
3.登记日志文件
什么是日志文件?日志文件(log file)是用来记录事务对数据库的更新操作的文件
日志文件的格式和内容:
以记录为单位的日志文件:事务标识(标明是哪个事务);操作类型(插入、删除或修改);操作对象(记录ID、Block NO.);更新前数据的旧值(对插入操作而言,此项为空值);更新后数据的新值(对删除操作而言, 此项为空值)。
以数据块为单位的日志文件:事务标识;被更新的数据块
五:恢复策略
1.事务故障:事务在运行至正常终止点前被终止
恢复方法:由恢复子系统利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复由系统自动完成,对用户是透明的,不需要用户干预。
2.系统故障造成数据库不一致状态的原因:未完成事务对数据库的更新可能已写入数据库;已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库
恢复方法: Undo 故障发生时未完成的事务;Redo 已完成的事务
系统故障的恢复由系统在重新启动时自动完成,不需要用户干预
3.介质故障的恢复:重装数据库;重做已完成的事务
六:具有检查点的恢复技术
1.问题的提出:搜索整个日志将耗费大量的时间;重做处理:重新执行,浪费了大量时间
2.检查点技术:
检查点记录的内容:建立检查点时刻所有正在执行的事务清单;这些事务最近一个日志记录的地址。
重新开始文件的内容:记录各个检查点记录在日志文件中的地址
3.利用检查点的恢复策略:使用检查点方法可以改善恢复效率。
当事务T在一个检查点之前提交,T对数据库所做的修改已写入数据库;写入时间是在这个检查点建立之前或在这个检查点建立之时 ;在进行恢复处理时,没有必要对事务T执行重做操作
七: 数据库镜像:数据库管理系统自动把整个数据库或其中的关键数据复制到另一个磁盘上。数据库管理系统自动保证镜像数据与主数据的一致性,每当主数据库更新时,数据库管理系统自动把更新后的数据复制过去