数据库管理——数据库的恢复

数据库的恢复

目录:

1.定义

2.存储器结构

3.恢复的基本原则和实现方法

4.故障类型和恢复方法

5.检查点技术

 

1.定义

系统能把数据库从被破坏、不正确的状态恢复到最近一个正确的状态,DBMS的这种能力称为数据库的可恢复性(Recovery)。

2.存储器结构

1.存储器的类型

①易失性存储器:指内存。cashe存储器。系统发生故障时,存储的信息立即丢失,但是访问速度非常快。

②非易失性存储器:指磁盘和磁带。系统发生故障时,存储的信息不会丢失。如发生存储器本身的故障,会导致信息的丢失。它的访问速度要比易失性存储器慢几个数量级。

③稳定存储器:理论上的概念。存储器在稳定存储器中的信息是绝不会丢失的。这可以通过对非意识形态存储器进行技术处理,达到稳定存储器的目标。

2.稳定存储器如何实现?

可以通过数据备份数据银行方法,实现稳定存储器的目标。

3.数据访问

数据在磁盘上以称为“块”的定长存储单位形式组织。块是内、外存数据交换的基本单位。磁盘中的块称为“物理块”,内存中临时存放物理块内容的块称为“缓冲块”,所有缓冲块组成了“粗盘缓冲区”。

输入(input)操作:数据从物理块到缓冲块。

输出(output)操作:数据从缓冲块到物理块。

 

还有read和write操作,需要注意这两个操作一般只需要数据块从磁盘到内存的传递。

那什么时候才会实现从内存到磁盘的传送呢?

①缓冲区管理系统需要内存空间,及内存空间不足。

②DBS希望改变磁盘中的值。

以上两种情况下,才会执行output操作。

4.恢复与原子性的联系

系统发生故障,内存内容丢失时,为了达到事务的原子性这个目标,必须首先把描述修改的信息输出到稳定存储器中,但此时不修改磁盘中的数据。这个过程知道事务的COMMIT操作为止。“日志”技术可实现这个过程。

3.恢复的基本原则和实现方法

数据库的恢复,意味着要把数据库恢复到最近一次故障前的一致性状态。

要使数据库具有可恢复性,基本原则很简单,就是“冗余”,即数据库重复存储。

数据库恢复的具体实现方法如下:

1.平时做好两件事:转储和建立日志

2.一旦发生数据库故障,分两种情况处理:

①如果数据库遇到灾难性故障,例如,磁盘脱落,磁盘损坏等,这时数据库已不能用了,就必须装入最近一次的数据库备份到新的硬盘,然后利用日志库“重做”(REDO)已提交的事务,把数据库恢复到故障前的状态。

②如果数据库未遭到物理性破坏,但破坏了数据库的一致性(某些数据不正确),此时不必去复制存档的数据库,只要利用日志库“撤销”(UNDO)所有不可靠的修改,再利用日志库的“重做”(REDO)已提交的、但对数据库的更新可能还留在内存缓冲区的事务,就可以把数据库恢复到正确的状态。

4.故障类型和恢复方法

在DBS引入事务的概念以后,数据库的故障具体体现为事务执行的成功与失败,常见故障可分为三类:

1.事务故障

①可以预期的事务故障:如存款余额透支,执行UNDO。

②非预期的事务故障:如内存溢出,执行UNDO。

2.系统故障

引起系统停止运转随之要求重新启动的事件称为系统故障。例如,硬件故障,软件错误,掉电等。

造成主存丢失,但不破坏数据库。

重新启动后,具体处理分两种情况考虑:

①对未完成事务作UNDO处理。

②对已提交事务但更新还留在缓冲区的事务进行REDO处理。

3.介质故障

在发生介质故障和遭受病毒破坏时,磁盘上的物理数据库遭到毁灭性破坏。恢复过程如下:

①重装最近转储的后备副本到新的硬盘。

②在日志中找出最近转储以后所有已提交的事务。

③对这些已提交的事务进行REDO处理。

事务故障和系统故障的恢复由系统自动进行,而介质故障的恢复需要DBA(Administrator)配合执行。在实际中,系统故障通常称为软故障,介质故障通常称为硬故障。

 

5.检查点技术

1.检查点方法

在DBS运行时,DBMS定时设置检查点。在检查点时刻才真正做到把对DB的修改写到磁盘,并在日志文件写入一条检查点记录(以便恢复时使用)。当DB需要恢复时,只有那些在检查点后面的事务需要恢复。

172738_Jbiu_3786691.png

①事务T1不必恢复。

②事务T2和T4必须做(REDO),因为他们commit的信息存在内存缓冲区中,还未写到磁盘。

③事务T3和T5必须撤销(UNDO),因为它们还未做完,必须撤销事务已对DB做的修改。

2.检查点方法的恢复算法

采用检查点方法的基本恢复方法分成两步。

1.根据日志文件建立事务重做队列和事务撤销队列。

2.对重做队列中的事务进行REDO处理,对撤销队列中的事务进行UNDOchu8loi。

转载于:https://my.oschina.net/u/3786691/blog/1815613

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值