数据库恢复技术(事物、三种更新策略以及恢复策略)

数据库恢复所要达到的目标

  • 1、希望尽可能的减少发生故障的次数。
          作为数据库来说,我肯定是想尽可能的减少犯病的次数,最好就没有嘛。
  • 2、在出现故障的时候,能够通过一些方式进行故障恢复。
          比如说当我数据库正在访问的时候,突然停电了,这就可能导致数据库的内容不一致了。这里要涉及到数据库一致性的内容,后面会用实例具体分析。

数据库为了达到目标的恢复策略

在说恢复策略之前我们先想一个问题——要想达到上面的目标,数据库要怎么去做呢?

首先是减少发生故障的次数,这方面主要是要加强数据库的数据规范和存取规范,相当于是要有规矩整个过程才能有条不紊不容易出错嘛,也容易理解。这个在后面的事务中会有提及。

之后是关于故障恢复的问题,数据库肯定要做些什么才能帮助我们更好的恢复数据库,有以下两个方面的考察:

  • 1、数据库要发现所有的故障。就算有的故障数据库处理不了,但是至少也得有个报错信息。
  • 2、数据库要有冗余。这里的冗余指的是数据库的备份,和数据冗余要区分开来。

而数据库恢复策略,主要针对当数据库发现故障之后所做的应对策略。比如停电之后,重启数据库,数据库的重启动恢复(后面会提到,这里可以简单理解成数据库的通过这个方式发现故障就行了)发现了故障,之后该怎么做,数据库对此有以下三种策略:
       1、周期性转储
       2、周期性转储+增量转储
       3、周期性转储+日志
下面分别对这三种策略进行分析说明。

  • 首先是周期性转储,简单点说,就是一段时间对数据库进行一次备份,这样当发生故障的时候就可以根据之前的备份对数据库进行恢复了。下面给张图方便理解。(灵魂画师(doge))
    在这里插入图片描述
    这里可以看出,虽然可以在备份点进行备份,但是从备份点到故障点中间的这一部分用户的操作就丢失了,这肯定不是我们所希望的。

  • 那我们再来看看第二种策略,周期性转储+增量转储。这种策略在第一种策略基础上做了改进:记录了自从上次备份之后变化的那一部分的记录,也就是增量转储的部分。还是以下图为例:
    在这里插入图片描述
    增量转储也是周期性存储的,如果每时每刻都进行增量性转储是不现实的,代价很大。所以增量转储点到故障点之间依然有数据丢失的部分,虽然相较于单一的周期性转储来说优化了许多,但也仍有瑕疵。

当然无论是做什么事情,都是一个循序渐进的过程。前面的两种方式为我们后续想法的提出做了很好的铺垫:如果增量转储点能够每时每刻做,那不就可以使得增量转储点到故障点之间没有数据丢失了?
事实上雀氏如此。增量转储点是 你操作完之后,我才重新把你变化的部分记录,比如 你插入了两次数据,并让数据库做了相应改变之后,我才记录。如果数据库在你插入的过程中故障了,就恢复不了(因为没有记录,你之前的操作也丢失了,除非去手动恢复,不然数据库没有信息来源)。
那只要现在我把你每一步操作都先提前记录下来,放到一个非挥发性存储器中(就类似硬盘这种断点之后数据不会丢失的存储器,像内存就是挥发性的)这样恢复的时候岂不是想怎么恢复就怎么恢复了。(为所欲为)

  • 这样就提出了第三点:周期性转储+日志。这种方式在企业级的数据库中得到了广泛使用。日志(log)记录了自上次备份以
  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值