数据库原理-第8章:数据库恢复技术
Posted 可能自洽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理-第8章:数据库恢复技术相关的知识,希望对你有一定的参考价值。
1.事务
1.1 事务(Transaction)概念
定义:用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。恢复和并发控制的基本单位。
事务和程序比较:在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序。一个程序通常包含多个事务。
1.2 定义事务
(1)显式定义方式
BEGIN TRANSACTION
SQL 语句1
SQL 语句2
。。。。。
COMMIT
BEGIN TRANSACTION
SQL 语句1
SQL 语句2
。。。。。
ROLLBACK
(2)隐式方式
当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务。
1.3 事务结束
(1)COMMIT
事务正常结束
提交事务的所有操作(读+更新)
事务中所有对数据库的更新永久生效
(2)ROLLBACK
事务异常终止,事务运行的过程中发生了故障,不能继续执行
回滚事务的所有更新操作,事务滚回到开始时的状态
1.4 事务的特性(ACID特性)
(1)原子性(Atomicity)
事务是数据库的逻辑工作单位
事务中包括的诸操作要么都做,要么都不做
(2)一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
一致性状态:数据库中只包含成功事务提交的结果
不一致状态:数据库中包含失败事务的结果
(3)隔离性(Isolation)
一个事务的执行不能被其他事务干扰
一个事务内部的操作及使用的数据对其他并发事务是隔离的
并发执行的各个事务之间不能互相干扰
(4)持续性(Durability )
持续性也称永久性
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
接下来的其他操作或故障不应该对其执行结果有任何影响。
2.故障
2.1 事务内部的故障(某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了)
(1)分类:
可预期的,可以通过事务程序本身发现
可预期的例子:
银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。
BEGIN TRANSACTION
BALANCE=BALANCE-AMOUNT; (BALANCE账户甲余额,AMOUNT为转账金额)
IF(BALANCE < 0 )
THEN
{
打印 ‘金额不足,不能转账’;
ROLLBACK; (撤销刚才的修改,恢复事务)
}
ELSE
{
乙的余额 BALANCE1;
BALANCE1=BALANCE1+AMOUNT;
COMMIT;
}
若产生账户甲余额不足的情况,应用程序可以发现并让事务滚回,撤销已作的修改,恢复数据库到正确状态。
非预期的
Begin transaction
fac=1;
for i=1 to n do
fac=fac*I;
……
commit
(2)事务故障的恢复:
撤消事务(UNDO)
在不影响其他事务运行的情况下,强行回滚(ROLLBACK)该事务
撤销该事务已经做出的任何对数据库的修改,使得这个事务象根本没有启动过一样
2.2 系统故障
(1)系统故障
称为软故障,是指造成系统停止运转的任何事件,使得系统重新启动。
所有正在运行的事务都非正常终止
内存中数据库缓冲区的信息全部丢失
外部存储设备上的数据未受影响 (不破坏数据库)
(2)系统故障的常见原因
特定类型的硬件错误(如CPU故障)
操作系统故障
DBMS代码错误
系统断电
(3)系统故障的恢复
发生系统故障时,事务未提交
恢复策略:强行撤消(UNDO)所有未完成事务
发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上
恢复策略:重做(REDO)所有已提交的事务
2.3 介质故障
(1)介质故障
称为硬故障,指外存故障,破坏性最大
(2)故障常见原因
磁盘损坏
磁头碰撞
操作系统的某种潜在错误
瞬时强磁场干扰
(3)介质故障的恢复
装入数据库发生介质故障前某个时刻的数据副本
重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库
2.4 计算机病毒
一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序
可以繁殖和传播
危害
破坏、盗窃系统中的数据
破坏系统文件
3.恢复的原理和实现技术
3.1 数据转储
(1)数据转储
转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程,备用的数据称为后备副本或后援副本
如何使用:数据库遭到破坏后可以将后备副本重新装入,重装后备副本只能将数据库恢复到转储时的状态
(2)转储方法
静态转储与动态转储
海量转储与增量转储
3.2 登记日志文件
日志的作用
事务故障恢复和系统故障恢复,必须用日志文件
动态转储后的后备副本进行介质故障恢复,必须用日志文件
静态转储后的后备副本进行介质故障恢复,也可用日志文件
以上是关于数据库原理-第8章:数据库恢复技术的主要内容,如果未能解决你的问题,请参考以下文章
《Elasticsearch 源码解析与优化实战》第13章:Snapshot 模块分析
《Elasticsearch 源码解析与优化实战》第13章:Snapshot 模块分析