您现在的位置是:群英 > 数据库 > MySQL数据库
数据库恢复技术有什么?如何实现恢复?
Admin发表于 2021-11-15 17:03:391767 次浏览

    数据库恢复技术有什么?数据库的重要性不多说,如果数据库出现什么问题,能实现恢复的话,那么就能大大减低损失。这篇我们就来了解几个常见的数据库恢复技术,感兴趣的朋友就继续往下看吧。

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

数据库恢复概述

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

<h梵蒂冈介质故障

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

计算机病毒

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

恢复的实现技术

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

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的要求,自动把整个数据库或其中 的关键数据复制到另一个磁盘上。

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

    关于数据库恢复技术的内容就介绍到这,本文对数据库恢复技术有很详细的介绍,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多数据库恢复的内容,大家可以关注其它的相关文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-06-17 17:40:32 
摘要:这篇文章主要介绍了Oracle 触发器实现主键自增,说白了就是数据确认(after)与安全性检查(before),此外触发器不针对select操作,本文给大家介绍的非常详细,需要的朋友参考下吧
2022-05-18 16:10:48 
摘要:查询mysql编码的方法:1、使用“show variables like 'character_set_database';”语句,可查看数据库编码格式;2、使用“show create table 数据表名;”语句,可查看数据表的编码。
2022-06-17 17:15:37 
摘要:关系数据库中的数据逻辑结构是二维表格。关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组。一个数据库可以包含任意多个数据表。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部