【数据库系统概论】数据库恢复机制

系统文章目录

数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统
数据库系统的三级模式和二级映射
数据库系统外部的体系结构
数据模型
关系数据库中的关系操作
SQL是什么?它有什么特点?
数据定义之基本表的定义/创建、修改和删除
数据定义之索引的创建、修改与删除
数据查询之单表查询。详细解释WHERE、OEDER BY、GROUP BY 和 HAVING
关系的完整性(实体完整性、参照完整性、用户定义的完整性)
事务(包括事务的基本概念和特性解释)


为什么要有数据库恢复机制

当出现故障,造成事务在运行过程中被强行停止从而影响数据库中数据的正确性,使得数据库的状态不是正确的。这时就需要数据库恢复机制将数据库的状态恢复到某一已知的正确状态。

遇到故障后,数据库要么被破坏,要么数据不正确。

数据库恢复技术能够保证事务的一致性


恢复的实现技术

恢复的基本原理是:冗余。利用存储在系统别处的冗余数据来重建数据库中已被破坏或不正确的那部分数据。虽然恢复技术的基本原理很简单,但实现技术的细节确相当复杂。

恢复机制涉及的关键问题有两点:

  • 如何建立冗余数据
  • 如何利用这些冗余数据实施数据库恢复

建立冗余数据最常用的技术是数据转储和登录日志文件。通常这两个方法是一起用的。


数据转储

转储的含义:转储是指数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。这些备用的数据文本称为后备副本(backup)。

恢复过程:数据库遭到破坏后可以将后备副本重新装入,重装后备副本只能将数据库恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。

转储过程:转储可以分为静态转储和动态转储。

  • 静态转储就是在转储的过程中系统不允许进行任何存取活动。优点是能得到数据一致性的副本,缺点在于会降低数据库的可用性,毕竟如果数据库很大,转储时间就很长,那么这段时间都不能对数据库进行操作的话,对于有些业务场景来说肯定是不能接受的。
  • 动态转储就是在储的过程中允许对数据库进行存取和修改。也就是说转储和用户事务可以并发执行。优点是不会影响新事务的运行,缺点是不能保证副本中的数据正确有效,比如在转储期间的某时刻Tc,系统把数据A=100转储到磁盘上,而在下一时刻Td,某一事务将A改为200,那么后备副本上的A就是过时的。解决方案是把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件,这样后备副本加上日志文件就能把数据库恢复到某一时刻的正确状态。

登录日志文件

什么是日志文件:日志文件(log file)记录了事务对数据库的更新操作。

不同的数据库系统采用的日志文件格式并不完全一样。概括起来主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。

以记录为单位的日志文件的内容

  • 各个事务的开始标记(BEGIN TRANSACTION)
  • 各个事务的结束标记(COMMIT或ROLLBACK)
  • 各个事务的所有更新操作

以上共同构成日志文件中的一条记录。具体来说,每个日志记录的内容主要包括:

  • 事务标识(标明是哪个事务)
  • 操作类型(插入、删除或修改)
  • 操作对象(记录ID、Block NO.)
  • 更新前数据的旧值(对插入操作而言,此项为空值)
  • 更新后数据的新值(对删除操作而言, 此项为空值)

必须先写日志文件,后写数据库


REDO(重做)和UNDO(撤销)

恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。


具有检查点的恢复技术

为什么:利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要重做,哪些事务需要撤销。一般来说会检查所有的日志记录,但是搜索整个日志将耗费大量的时间。其次有很多需要重做处理的事务实际上已经在数据库中执行了,然而恢复子系统又重新执行了这些操作,浪费了大量时间。为了解决这些问题,又发展了具有检查点(checkpoint)的恢复技术。这种技术在日志文件中增加检查点记录(checkpoint),增加一个重新开始文件,并让恢复子系统在登录日志文件期间动态地维护日志。

检查点记录的内容包括:建立检查点时刻所有正在执行的事务清单和这些事务最近一个日志记录的地址。

重新开始文件的内容:记录各个检查点记录在日志文件中的地址。

在这里插入图片描述

系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复策略。

例如:

在这里插入图片描述

  • T1:在检查点之前提交
  • T2:在检查点之前开始执行,在检查点之后故障点之前提交
  • T3:在检查点之前开始执行,在故障点时还未完成
  • T4:在检查点之后开始执行,在故障点之前提交
  • T5:在检查点之后开始执行,在故障点时还未完成

恢复策略:

  • T3和T5在故障发生时还未完成,所以需要撤销(UNDO)
  • T2和T4在检查点之后才提交,它们对数据库所做的修改在故障发生时可能还在缓冲区中,尚未写入数据库,所以要重做(REDO)
  • T1在检查点之前已提交,所以不必执行重做操作

从上面这个例子中就能充分体会到什么叫恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。

  • 25
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
我的学习目标是深入了解数据库备份与恢复的原理和方法,掌握数据库备份与恢复的基本概念和技巧,学会使用常见的数据库备份与恢复工具和策略,能够独立进行数据库备份与恢复,并能解决数据库备份与恢复中遇到的问题和挑战。我希望能够掌握以下方面的知识和技能: 1. 数据库备份策略:学习如何制定合理的数据库备份策略,包括完全备份、增量备份、差异备份等,了解各种备份策略的优缺点,并根据实际需求选择合适的备份策略。 2. 数据库备份工具:学习使用常见的数据库备份工具,如MySQL的mysqldump命令、Oracle的RMAN工具等,了解这些工具的使用方法和参数设置,能够进行数据库的全量备份和增量备份。 3. 数据库恢复方法:学习不同情况下的数据库恢复方法,如完全恢复、部分恢复、点恢复等,了解各种恢复方法的原理和步骤,并能够根据实际情况选择合适的恢复方法。 4. 数据库灾难恢复:学习如何应对数据库灾难,如硬件故障、人为错误、自然灾害等,了解数据库灾难恢复的基本原则和方法,包括数据恢复系统恢复、业务恢复等。 5. 数据库备份验证与监控:学习如何验证数据库备份的完整性和可靠性,了解常见的备份验证方法,如校验和比对、日志分析等,同时学习如何监控数据库备份的执行情况,及时发现备份异常并采取相应措施。 通过学习数据库备份与恢复,我希望能够成为一名熟练的数据库管理员,能够保障数据库的安全性和可靠性,及时处理数据库备份与恢复相关的问题,确保数据的完整性和可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不怕娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值