首页 >数据库 >mysql教程 >数据库恢复技术有哪些

数据库恢复技术有哪些

青灯夜游
青灯夜游原创
2021-07-27 11:17:2922335浏览

数据库恢复技术有:1、数据转储,即DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。2、登记日志文件,日志文件是用来记录事务对数据库的更新操作的文件,设立日志文件可以进行事务故障恢复、系统故障恢复、协助后备副本进行介质故障恢复。

数据库恢复技术有哪些

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

数据库恢复概述

  数据库管理系统必须具有把数据库从某一错误状态恢复到某一已知的正确状态的功能,这就是数据库的恢复。恢复子系统是数据库管理系统的一个重要组成部分,而且还相当庞大,常常占整个系统代码的百分之十以上。数据库系统采用的恢复技术是否行之有效,不仅对系统的可靠程度起着决定性作用,而且对系统的运行效率也有很大影响,是衡量系统性能优劣的重要指标。

  系统故障称为软故障,介质故障称为硬故障。硬故障指外存故障,如磁盘损坏、磁头碰撞、瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。

计算机病毒

  总结各类故障,对数据库的影响有两种可能性。一是数据库本身被破坏。二是数据库没有被破坏,但数据可能不正确,这时由于事务的运行被非正常终止造成的。

恢复的实现技术

恢复机制涉及两个关键问题:

1、如何建立冗余数据;

2、如何利用这些冗余数据实施数据库恢复。 

建立冗余数据最常用的技术是数据转储和登记日志文件。通常在一个数据库系统中,这两种方法是一起使用的。

数据转储

数据转储是数据库恢复中采用的基本技术。所谓转储即DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据成为后备副本或后援副本。 

转储可以分为静态转储和动态转储。 

  • 静态转储是在系统中无运行事务时进行的转储操作。即转储操作开始的时刻,数据库处于一致性状态,而转储期间不允许对数据库的任何存取、 修改活动。显然,静态转储得到的一定是一个数据一致性的副本。 

  • 动态转储是指转储期间允许对数据库进行存取或修改。但是,转储结束时后援副本上的数据并不能保证正确有效。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件,这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。 

转储可以分为海量转储和增量转储两种方式。海量转储是指每次转储全部数据库。增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般来说更方便一些。
数据转储方法可以分为四类:动态增量转储、动态海量转储、静态增量转储、静态海量转储。

登记日志文件

日志文件的格式和内容

日志文件是用来记录事务对数据库的更新操作的文件。日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。 

以记录为单位的日志文件,需要登记的内容包括: 

1、各个事务的开始标记
2、各个事务的结束标记
3、各个事务的所有更新操作 

每个日志记录的内容包括: 

1、事务标识(标明是哪个事务)
2、操作的类型(插入、删除或修改)
3、操作对象(记录内部标识)
4、更新前数据的旧值
5、更新后数据的新值

日志文件的作用

日志文件在数据恢复中起着非常重要的作用。可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。

具体作用是: 

1、事务故障恢复和系统故障恢复必须用日志文件

2、在动态转储方式必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。 

3、在静态转储方式中,也可以建立日志文件。

登记日志文件

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:
1.登记的次序严格按并发事务执行的时间次序
2.必须先些日志文件,后写数据库。

恢复策略

事务故障的恢复

事务故障的恢复是由系统自动完成的,对用户是透明的。系统的恢复步骤是: 

1、反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。 

2、对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。这样如果记录中是插入操作,则相当于做删除操作;若记录中是删除操作,则做插入操作;若是修改操作,则相当于修改求前值代替修改后值。 

3、继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 

4、如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

系统故障的恢复

事务故障的恢复是由系统自动完成的,对用户是透明的。系统的恢复步骤是: 

1、正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做队列。同时找出故障发生时尚未完成的事务,将其事务表示计入撤销队列。

2、对撤销(UNDO)队列中的各个事务进行撤销处理。 

进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。 

3、对重做队列中的各个事务进行重做REDO处理 

进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库。

介质故障的恢复

恢复故障的方法是重装数据库,然后重做已完成的事务。 

1、装入最新的数据库后备副本,是数据库恢复到最近一次转储时的一致性状态。 

2、装入相应的日志文件副本,重做已完成的事务。即首先扫描日志文件,找出故障发生时已提交的事务的标识,将其计入重做队列。然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。 

介质故障的恢复需要DBA介入。但DBA只需要重装最近转储的数据库副本和有关的各日志文件副本,然后秩序系统提供的恢复命令即可,具体的恢复操作仍有DBMS完成。

数据库镜像

  随着磁盘容量越来越大,价格越来越便宜,为避免磁盘介质出现故障影响数据库的可用性,许多数据库管理系统提供了数据经销功能用于数据库恢复。根据DBA的要求,自动把整个数据库或其中 的关键数据复制到另一个磁盘上。 

  由于数据库镜像是通过复制数据实现的,频繁地复制数据自然会降低系统运行效率,因此在时间应用中用户往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像。

(推荐教程:mysql视频教程

以上是数据库恢复技术有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn