第十章 数据库恢复技术
介绍事务的基本概念和事务的性质,讲解数据库系统遇到故障后进行恢复技术和方法。
事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元,是一个不可分割的工作单位。
事务和程序是两个概念,一般来说,一个程序里面包含多个事务。
事务处理技术主要包括数据库恢复技术和并发控制技术。
事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability),这四个特性简称为ACID特性。
原子性:事务时数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性的状态变到另一个一致性的状态,因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。
隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
事务是恢复和并发控制的基本单位。
事务ACID特性可能遭到破坏的因素有:
1) 多个事务并行运行时,不同事务的操作交叉执行;
2) 事务在运行过程中被强行停止。
第一种情况下,数据库管理系统必须保证多个事务的交叉运行不影响这些事务的原子性;第二种情况下,数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响。这就是数据库管理系统中恢复机制和并发控制机制的责任。
故障的种类:
事务内部的故障(使用rollback进行强行回滚,即撤销该事务已经做出的任何对数据库的修改,使其好像没有启动一样,这类恢复操作被称为事务撤销(UNDO))
系统故障
介质故障(系统故障称为软故障,介质故障称为硬故障)
计算机病毒
各类故障对数据库的影响有两种可能性,一是数据库本身被破坏,二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。
恢复:冗余,即数据库中任何一部分被破坏或不正确的数据可以根据存储在系统别处的冗余数据来重建。
恢复机制设计的两个关键问题是:第一,如何建立冗余数据;第二,如何利用这些冗余数据实施数据库恢复。
恢复的实现技术
数据转储
数据转储是数据库恢复中采用的基本技术,即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。 转储是十分耗费时间和资源的,不能频繁进行。
转储可以分为静态转储和动态转储。
静态转储是在系统中无法运行事务时进行的转储操作。动态转储是指转储期间允许对数据库进行存取或修改,即转储和用户事务可以并发执行。
海量是指每次转储全部数据库,增量是指每次只转储上一次转储后更新过的数据。
等级日志文件(Logging)
日志文件是用来记录事务对数据库的更新操作的文件,不同的数据库系统采用的日志文件格式并不同,主要分两种:以记录为的单位的日志文件和以数据块为单位的日志文件。
以记录为单位的日志文件包括:
各个事务的开始(BEGIN TRANSACTION)标记
各个事物的结束(COMMIT或ROLLBACK)标记
各个事物的所有更新操作
每个日志记录的内容主要包括:
事务标识(标明是哪个事务)
操作的类型(插入、删除或修改)
操作对象(记录内部标识)
更新前数据的旧值(对插入操作而言,此项为空值)
更新后数据的新值(对删除操作而言,此项为空值)
以数据块为单位的日志文件,日志记录的内容包括事务标识和被更新的数据块。
日志文件的作用:
日志文件在数据库恢复中起着非常重要的作用,可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复,具体作用为:
1)事务故障恢复和系统故障恢复必须用日志文件
2)在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。
3)在静态转储方式中,也可以建立日志文件。
登记日志文件
为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:
1) 登记的次序严格按并发事务执行的时间次序;
2) 必须先写日志文件,后写数据库。
恢复策略
事务故障的恢复
事务故障是指事物在运行至正常终止点前被终止,这是恢复子系统利用日志文件撤销(UNDO)此事务已经对数据库进行的修改,事务故障的恢复是由系统自动完成的。
系统故障的恢复
介质故障的恢复
数据库镜像
数据库镜像功能:根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。