数据库恢复技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
An Introduction to Database System
2、系统故障 、
系统故障
称为软故障,是指造成系统停止运转的任何事件, 称为软故障,是指造成系统停止运转的任何事件,使得 系统要重新启动。 系统要重新启动。 整个系统的正常运行突然被破坏 所有正在运行的事务都非正常终止 不破坏数据库 内存中数据库缓冲区的信息全部丢失
An Introduction to Database System
二、故障的种类
事务内部的故障 系统故障 介质故障 计算机病毒
An Introduction to Database System
1、事务内部的故障 、
事务内部的故障
有的是可以通过事务程序本身发现的(见下面转账事 有的是可以通过事务程序本身发现的( 务的例子) 务的例子) 有的是非预期的
An Introduction to Database System
系统故障的常见原因
特定类型的硬件错误( 故障) 特定类型的硬件错误(如CPU故障) 故障 操作系统故障 DBMS代码错误 代码错误 系统断电
An Introduction to Database System
系统故障的恢复
发生系统故障时,事务未提交 发生系统故障时,
An Introduction to Database System
一、数据库恢复概述
故障是不可避免的
系统故障:计算机软、 系统故障:计算机软、硬件故障 人为故障:操作员的失误、恶意的破坏等。 人为故障:操作员的失误、恶意的破坏等。
Baidu Nhomakorabea
数据库的恢复 把数据库从错误状态恢复到某一已知的正确状态 一致状态或完整状态) (一致状态或完整状态)
故障小结
各类故障,对数据库的影响有两种可能性 各类故障,
一是数据库本身被破坏 二是数据库没有被破坏,但数据可能不正确, 二是数据库没有被破坏,但数据可能不正确,这是由 于事务的运行被非正常终止造成的
An Introduction to Database System
三、恢复的实现技术
恢复操作的基本原理: 恢复操作的基本原理:冗余 利用存储在系统其它地方的冗余数据来重建数据库中已 被破坏或不正确的那部分数据。 被破坏或不正确的那部分数据。 恢复机制涉及的关键问题: 恢复机制涉及的关键问题: 1.如何建立冗余数据 如何建立冗余数据 数据转储( 数据转储(backup) ) 登录日志文件( 登录日志文件(logging) ) 2.如何利用这些冗余数据实施数据库恢复 如何利用这些冗余数据实施数据库恢复
An Introduction to Database System
事务内部的故障(续) 事务内部的故障(
事务内部更多的故障是非预期的, 事务内部更多的故障是非预期的,是不能由应用程序处理 的。
运算溢出 并发事务发生死锁而被选中撤销该事务 违反了某些完整性约束等
以后,事务故障主要指这一类非预期的故障 以后,事务故障主要指这一类非预期的故障 事务故障的恢复:撤消事务( 事务故障的恢复:撤消事务(UNDO) )
失败 状态
异常 状态
1、活动状态 、 事务开始运行时被激活,就处于活动状态, 事务开始运行时被激活,就处于活动状态,直到事务被 部分提交或失败。在这个状态中, 部分提交或失败。在这个状态中,事务将执行对数据库的 读写操作,但这时的写操作并非立即写到磁盘上, 读写操作,但这时的写操作并非立即写到磁盘上,一般是 暂时存放在系统缓冲区中。 暂时存放在系统缓冲区中。
An Introduction to Database System
事务内部的故障(续) 事务内部的故障(
例如:银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。 例如:银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。 BEGIN TRANSACTION 读账户甲的余额BALANCE; 读账户甲的余额 ; BALANCE=BALANCE-AMOUNT;(AMOUNT 为转账金额 为转账金额) ; 写回BALANCE; 写回 ; IF(BALANCE < 0 ) THEN { 打印'金额不足,不能转账'; 打印 金额不足,不能转账 ; 金额不足 ROLLBACK;(撤销刚才的修改,恢复事务 撤销刚才的修改, ; 撤销刚才的修改 恢复事务) } ELSE { 读账户乙的余额BALANCE1; 读账户乙的余额 ; BALANCE1=BALANCE1+AMOUNT; ; 写回BALANCE1; 写回 ; COMMIT; ; }
3、介质故障 、
介质故障 称为硬故障, 称为硬故障,指外存故障
磁盘损坏 磁头碰撞 操作系统的某种潜在错误 瞬时强磁场干扰
An Introduction to Database System
介质故障的恢复
装入数据库发生介质故障前某个时刻的数据副本 装入数据库发生介质故障前某个时刻的数据副本 数据库发生介质故障前某个时刻的数据 重做自此时始的所有成功事务,将这些事务已提 重做自此时始的所有成功事务, 成功事务 交的结果重新记入数据库
原子性( 原子性(Atomicity) ) 一致性( 一致性(Consistency) ) 隔离性( 隔离性(Isolation) ) 持续性( 持续性(Durability )
An Introduction to Database System
事务的ACID特性 特性 事务的
因此,要保证事务能够正确地执行, 因此,要保证事务能够正确地执行,就是要确保事务的 ACID特性得到满足。 特性得到满足。 特性得到满足 事务ACID特性可能遭到破坏的因素有: 特性可能遭到破坏的因素有: 事务 特性可能遭到破坏的因素有 (1)多个事务并发运行时,不同事务的操作交叉执行 )多个事务并发运行时, (2)事务在运行过程中被强行中止 ) 在第二种情况下, 在第二种情况下,数据库管理系统必须保证被强行中止的 事务对数据库和其它事务没有任何影响, 事务对数据库和其它事务没有任何影响,这就是数据库系 统中恢复机制的责任。 统中恢复机制的责任。 在数据库恢复中,加锁、日志文件、 在数据库恢复中,加锁、日志文件、事务提交等是常用的 技术。 技术。
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
2、部分提交状态 、 事务中所有读写操作已经完成, 事务中所有读写操作已经完成,事务进入部分提交状 但这时对数据库的修改还存储在内存缓冲区中, 态。但这时对数据库的修改还存储在内存缓冲区中,事务 还没有真正结束。 还没有真正结束。
An Introduction to Database System
事务内部的故障(续) 事务内部的故障(
这个例子所包括的两个更新操作要么全部完成要么全部不 做,否则就会使数据库处于不一致状态。例如只把账户甲 否则就会使数据库处于不一致状态。 的余额减少了而没有把账户乙的余额增加。 的余额减少了而没有把账户乙的余额增加。 在这段程序中若产生账户甲余额不足的情况, 在这段程序中若产生账户甲余额不足的情况,应用程序可 以发现并让事务滚回,撤销已作的修改, 以发现并让事务滚回,撤销已作的修改,恢复数据库到正 确状态。 确状态。
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
3、失败状态 、 当一个事务无法正常进行下去时, 当一个事务无法正常进行下去时,该事务就会处于失 败状态。这时,数据库管理系统( 败状态。这时,数据库管理系统(DBMS)必须撤消它对 ) 数据库和其他事务的影响。 数据库和其他事务的影响。
数据库恢复技术
一、数据库恢复概述 二、故障的种类 三、恢复的实现技术 四、恢复策略
An Introduction to Database System
事务的ACID特性 特性 事务的
数据库系统常常允许多个事务并发地执行, 数据库系统常常允许多个事务并发地执行,在数据库管理系 统(DBMS)中,事务管理程序的任务就是要保证这些事务 ) 全都能正确地执行。 全都能正确地执行。事务是数据库恢复和并发控制的基本单 保证事务的ACID特性是事务管理程序的重要任务。 特性是事务管理程序的重要任务。 位,保证事务的 特性是事务管理程序的重要任务 事务的ACID特性: 事务的ACID特性: 特性
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
4、异常结束状态 、 当撤消一个失败事务对数据库和其他事务的影响, 当撤消一个失败事务对数据库和其他事务的影响,并 恢复到事务开始执行之前的状态以后, 恢复到事务开始执行之前的状态以后,该失败事务退出数 据库系统,进入异常结束状态。 据库系统,进入异常结束状态。
An Introduction to Database System
事务的两段提交
事务运行时有如下五种状态: 事务运行时有如下五种状态:
部分 提交 活动 状态 提交 状态
失败 状态
异常 状态
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
恢复策略:强行撤消( 恢复策略:强行撤消(UNDO)所有未完成事务 )
发生系统故障时,事务已提交,但缓冲区中的信 发生系统故障时,事务已提交, 息尚未完全写回到磁盘上。 息尚未完全写回到磁盘上。
恢复策略:重做( 恢复策略:重做(REDO)所有已提交的事务 )
An Introduction to Database System
An Introduction to Database System
事务的两段提交
一个事务完成其操作并提交, 一个事务完成其操作并提交,严格上讲并非 已经“成功完成”该事务。实际上, 已经“成功完成”该事务。实际上,事务的提交 有一个过程,从开始提交到提交成功可以分为部 有一个过程,从开始提交到提交成功可以分为部 分提交和提交两个阶段 两个阶段。 分提交和提交两个阶段。 要详细了解这个问题, 要详细了解这个问题,首先要了解事务运行 过程中的状态变化。 过程中的状态变化。
An Introduction to Database System
4、计算机病毒 、
计算机病毒
一种人为的故障或破坏, 一种人为的故障或破坏,是一些恶作剧者研制的一 种计算机程序 可以繁殖和传播
危害
破坏、 破坏、盗窃系统中的数据 破坏系统文件
An Introduction to Database System
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
通常,一个事务开始运行便立即进入活动状态, 通常,一个事务开始运行便立即进入活动状态,当执行最后一个语句时 便进入部分提交状态。若处于活动状态的事务未能正常执行某一操作, 便进入部分提交状态。若处于活动状态的事务未能正常执行某一操作,或者 在部分提交状态中无法安全地将数据存入数据库,则事务进入失败状态。 在部分提交状态中无法安全地将数据存入数据库,则事务进入失败状态。此 只要撤消其对数据库和其他事务的影响,该事务就进入异常结束状态。 时,只要撤消其对数据库和其他事务的影响,该事务就进入异常结束状态。 对于进入异常结束状态的事务,要根据失败原因分别作出相应处理: 对于进入异常结束状态的事务,要根据失败原因分别作出相应处理:通 常情况下,由与事务无关的外部原因(如硬件故障或系统软件错误) 常情况下,由与事务无关的外部原因(如硬件故障或系统软件错误)引起的 失败,可以重新启动该事务;而对于事务内部错误所引发的失败, 失败,可以重新启动该事务;而对于事务内部错误所引发的失败,将予以废 通知用户修改或重写该事务程序。 除,通知用户修改或重写该事务程序。
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
5、提交状态 、 当一个事务成功地完成所有操作, 当一个事务成功地完成所有操作,并且所有的操作对 数据库的影响都已经永久地存入数据库之后, 数据库的影响都已经永久地存入数据库之后,该事务退出 数据库系统,进入提交状态,正常结束。 数据库系统,进入提交状态,正常结束。
2、系统故障 、
系统故障
称为软故障,是指造成系统停止运转的任何事件, 称为软故障,是指造成系统停止运转的任何事件,使得 系统要重新启动。 系统要重新启动。 整个系统的正常运行突然被破坏 所有正在运行的事务都非正常终止 不破坏数据库 内存中数据库缓冲区的信息全部丢失
An Introduction to Database System
二、故障的种类
事务内部的故障 系统故障 介质故障 计算机病毒
An Introduction to Database System
1、事务内部的故障 、
事务内部的故障
有的是可以通过事务程序本身发现的(见下面转账事 有的是可以通过事务程序本身发现的( 务的例子) 务的例子) 有的是非预期的
An Introduction to Database System
系统故障的常见原因
特定类型的硬件错误( 故障) 特定类型的硬件错误(如CPU故障) 故障 操作系统故障 DBMS代码错误 代码错误 系统断电
An Introduction to Database System
系统故障的恢复
发生系统故障时,事务未提交 发生系统故障时,
An Introduction to Database System
一、数据库恢复概述
故障是不可避免的
系统故障:计算机软、 系统故障:计算机软、硬件故障 人为故障:操作员的失误、恶意的破坏等。 人为故障:操作员的失误、恶意的破坏等。
Baidu Nhomakorabea
数据库的恢复 把数据库从错误状态恢复到某一已知的正确状态 一致状态或完整状态) (一致状态或完整状态)
故障小结
各类故障,对数据库的影响有两种可能性 各类故障,
一是数据库本身被破坏 二是数据库没有被破坏,但数据可能不正确, 二是数据库没有被破坏,但数据可能不正确,这是由 于事务的运行被非正常终止造成的
An Introduction to Database System
三、恢复的实现技术
恢复操作的基本原理: 恢复操作的基本原理:冗余 利用存储在系统其它地方的冗余数据来重建数据库中已 被破坏或不正确的那部分数据。 被破坏或不正确的那部分数据。 恢复机制涉及的关键问题: 恢复机制涉及的关键问题: 1.如何建立冗余数据 如何建立冗余数据 数据转储( 数据转储(backup) ) 登录日志文件( 登录日志文件(logging) ) 2.如何利用这些冗余数据实施数据库恢复 如何利用这些冗余数据实施数据库恢复
An Introduction to Database System
事务内部的故障(续) 事务内部的故障(
事务内部更多的故障是非预期的, 事务内部更多的故障是非预期的,是不能由应用程序处理 的。
运算溢出 并发事务发生死锁而被选中撤销该事务 违反了某些完整性约束等
以后,事务故障主要指这一类非预期的故障 以后,事务故障主要指这一类非预期的故障 事务故障的恢复:撤消事务( 事务故障的恢复:撤消事务(UNDO) )
失败 状态
异常 状态
1、活动状态 、 事务开始运行时被激活,就处于活动状态, 事务开始运行时被激活,就处于活动状态,直到事务被 部分提交或失败。在这个状态中, 部分提交或失败。在这个状态中,事务将执行对数据库的 读写操作,但这时的写操作并非立即写到磁盘上, 读写操作,但这时的写操作并非立即写到磁盘上,一般是 暂时存放在系统缓冲区中。 暂时存放在系统缓冲区中。
An Introduction to Database System
事务内部的故障(续) 事务内部的故障(
例如:银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。 例如:银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。 BEGIN TRANSACTION 读账户甲的余额BALANCE; 读账户甲的余额 ; BALANCE=BALANCE-AMOUNT;(AMOUNT 为转账金额 为转账金额) ; 写回BALANCE; 写回 ; IF(BALANCE < 0 ) THEN { 打印'金额不足,不能转账'; 打印 金额不足,不能转账 ; 金额不足 ROLLBACK;(撤销刚才的修改,恢复事务 撤销刚才的修改, ; 撤销刚才的修改 恢复事务) } ELSE { 读账户乙的余额BALANCE1; 读账户乙的余额 ; BALANCE1=BALANCE1+AMOUNT; ; 写回BALANCE1; 写回 ; COMMIT; ; }
3、介质故障 、
介质故障 称为硬故障, 称为硬故障,指外存故障
磁盘损坏 磁头碰撞 操作系统的某种潜在错误 瞬时强磁场干扰
An Introduction to Database System
介质故障的恢复
装入数据库发生介质故障前某个时刻的数据副本 装入数据库发生介质故障前某个时刻的数据副本 数据库发生介质故障前某个时刻的数据 重做自此时始的所有成功事务,将这些事务已提 重做自此时始的所有成功事务, 成功事务 交的结果重新记入数据库
原子性( 原子性(Atomicity) ) 一致性( 一致性(Consistency) ) 隔离性( 隔离性(Isolation) ) 持续性( 持续性(Durability )
An Introduction to Database System
事务的ACID特性 特性 事务的
因此,要保证事务能够正确地执行, 因此,要保证事务能够正确地执行,就是要确保事务的 ACID特性得到满足。 特性得到满足。 特性得到满足 事务ACID特性可能遭到破坏的因素有: 特性可能遭到破坏的因素有: 事务 特性可能遭到破坏的因素有 (1)多个事务并发运行时,不同事务的操作交叉执行 )多个事务并发运行时, (2)事务在运行过程中被强行中止 ) 在第二种情况下, 在第二种情况下,数据库管理系统必须保证被强行中止的 事务对数据库和其它事务没有任何影响, 事务对数据库和其它事务没有任何影响,这就是数据库系 统中恢复机制的责任。 统中恢复机制的责任。 在数据库恢复中,加锁、日志文件、 在数据库恢复中,加锁、日志文件、事务提交等是常用的 技术。 技术。
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
2、部分提交状态 、 事务中所有读写操作已经完成, 事务中所有读写操作已经完成,事务进入部分提交状 但这时对数据库的修改还存储在内存缓冲区中, 态。但这时对数据库的修改还存储在内存缓冲区中,事务 还没有真正结束。 还没有真正结束。
An Introduction to Database System
事务内部的故障(续) 事务内部的故障(
这个例子所包括的两个更新操作要么全部完成要么全部不 做,否则就会使数据库处于不一致状态。例如只把账户甲 否则就会使数据库处于不一致状态。 的余额减少了而没有把账户乙的余额增加。 的余额减少了而没有把账户乙的余额增加。 在这段程序中若产生账户甲余额不足的情况, 在这段程序中若产生账户甲余额不足的情况,应用程序可 以发现并让事务滚回,撤销已作的修改, 以发现并让事务滚回,撤销已作的修改,恢复数据库到正 确状态。 确状态。
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
3、失败状态 、 当一个事务无法正常进行下去时, 当一个事务无法正常进行下去时,该事务就会处于失 败状态。这时,数据库管理系统( 败状态。这时,数据库管理系统(DBMS)必须撤消它对 ) 数据库和其他事务的影响。 数据库和其他事务的影响。
数据库恢复技术
一、数据库恢复概述 二、故障的种类 三、恢复的实现技术 四、恢复策略
An Introduction to Database System
事务的ACID特性 特性 事务的
数据库系统常常允许多个事务并发地执行, 数据库系统常常允许多个事务并发地执行,在数据库管理系 统(DBMS)中,事务管理程序的任务就是要保证这些事务 ) 全都能正确地执行。 全都能正确地执行。事务是数据库恢复和并发控制的基本单 保证事务的ACID特性是事务管理程序的重要任务。 特性是事务管理程序的重要任务。 位,保证事务的 特性是事务管理程序的重要任务 事务的ACID特性: 事务的ACID特性: 特性
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
4、异常结束状态 、 当撤消一个失败事务对数据库和其他事务的影响, 当撤消一个失败事务对数据库和其他事务的影响,并 恢复到事务开始执行之前的状态以后, 恢复到事务开始执行之前的状态以后,该失败事务退出数 据库系统,进入异常结束状态。 据库系统,进入异常结束状态。
An Introduction to Database System
事务的两段提交
事务运行时有如下五种状态: 事务运行时有如下五种状态:
部分 提交 活动 状态 提交 状态
失败 状态
异常 状态
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
恢复策略:强行撤消( 恢复策略:强行撤消(UNDO)所有未完成事务 )
发生系统故障时,事务已提交,但缓冲区中的信 发生系统故障时,事务已提交, 息尚未完全写回到磁盘上。 息尚未完全写回到磁盘上。
恢复策略:重做( 恢复策略:重做(REDO)所有已提交的事务 )
An Introduction to Database System
An Introduction to Database System
事务的两段提交
一个事务完成其操作并提交, 一个事务完成其操作并提交,严格上讲并非 已经“成功完成”该事务。实际上, 已经“成功完成”该事务。实际上,事务的提交 有一个过程,从开始提交到提交成功可以分为部 有一个过程,从开始提交到提交成功可以分为部 分提交和提交两个阶段 两个阶段。 分提交和提交两个阶段。 要详细了解这个问题, 要详细了解这个问题,首先要了解事务运行 过程中的状态变化。 过程中的状态变化。
An Introduction to Database System
4、计算机病毒 、
计算机病毒
一种人为的故障或破坏, 一种人为的故障或破坏,是一些恶作剧者研制的一 种计算机程序 可以繁殖和传播
危害
破坏、 破坏、盗窃系统中的数据 破坏系统文件
An Introduction to Database System
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
通常,一个事务开始运行便立即进入活动状态, 通常,一个事务开始运行便立即进入活动状态,当执行最后一个语句时 便进入部分提交状态。若处于活动状态的事务未能正常执行某一操作, 便进入部分提交状态。若处于活动状态的事务未能正常执行某一操作,或者 在部分提交状态中无法安全地将数据存入数据库,则事务进入失败状态。 在部分提交状态中无法安全地将数据存入数据库,则事务进入失败状态。此 只要撤消其对数据库和其他事务的影响,该事务就进入异常结束状态。 时,只要撤消其对数据库和其他事务的影响,该事务就进入异常结束状态。 对于进入异常结束状态的事务,要根据失败原因分别作出相应处理: 对于进入异常结束状态的事务,要根据失败原因分别作出相应处理:通 常情况下,由与事务无关的外部原因(如硬件故障或系统软件错误) 常情况下,由与事务无关的外部原因(如硬件故障或系统软件错误)引起的 失败,可以重新启动该事务;而对于事务内部错误所引发的失败, 失败,可以重新启动该事务;而对于事务内部错误所引发的失败,将予以废 通知用户修改或重写该事务程序。 除,通知用户修改或重写该事务程序。
An Introduction to Database System
事务的两段提交
活动 状态 部分 提交 提交 状态
失败 状态
异常 状态
5、提交状态 、 当一个事务成功地完成所有操作, 当一个事务成功地完成所有操作,并且所有的操作对 数据库的影响都已经永久地存入数据库之后, 数据库的影响都已经永久地存入数据库之后,该事务退出 数据库系统,进入提交状态,正常结束。 数据库系统,进入提交状态,正常结束。