10.数据库恢复技术

news2024/12/23 6:38:58

其他章节here

梳理

在这里插入图片描述

名词解释

  • 事务:事务是用户定义的 一个数据操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
    • 事务≠程序
      在这里插入图片描述
    • 事务是恢复和并发控制的基本单位
      (事务时数据库应用程序的基本逻辑单元,亦即最小单位)
    • 定义事务
      • 隐式方式
        当用户没有显示地定义事务时,dbms按缺省规定自动划分事务
      • 显示定义事务
        在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 事务的ACID特性
    • 原子性Atomicity
      事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做
    • 一致性Consistency
      事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
      • 一致性状态:当数据库只包含成功事务提交的结果时,数据库处于一致性状态(否则为不一致的状态)
    • 隔离性Isolation
      一个事务的执行不能被其他事务干扰。
      即一个事务的内部操作及使用的数据对其他并发事务时隔离的,并发执行的各个事务之间不能互相干扰
    • 持续性Durability
      一个事务一旦提交,它对数据库中数据的改变就应该时永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响
  • 事务ACID特性可能遭到破坏 的因素
    • 多个事务并行运行时,不同事务的操作交叉执行
    • 事务在运行过程中被强行停止
      (故障恢复可以保障原子性和持续性
      并发控制可以保障一致性和隔离性)

  • 数据库恢复
    数据库管理系统把数据库从错误状态恢复到某一已知的正确状态(也称为一致状态或完整状态)的技术
  • 故障种类
    • 事务内部的故障
      有的是可以通过事务程序本身发现的;
      有的是非预期的,不能由事务程序处理
      • 事务内部更多的故障时非预期的,事务故障仅指这类非预期的故障
      • 事务故障意味着没有达到预期的终点,数据库可能处于不正确的状态
      • 事务故障的恢复:事务撤销UNDO
        强行回滚该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务如没启动一样
    • 系统故障
      称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动
      • 系统故障的影响
        在这里插入图片描述
      • 系统故障的恢复
        • 系统重新启动时,让所有非正常终止的事务回滚,强行撤销所有未完成事务(撤销已完成)
        • 系统重新启动后,恢复程序重做(REDO)所有已提交的事务(重做已提交)
    • 介质故障(磁盘损坏,磁头碰撞,瞬时强磁场干扰)
      称为硬故障,指外存故障
      • 破坏数据库或部分数据库,并影响正在存取这部分数据的事务
      • 发生的可能性比前两类小,但是破坏性大得多
    • 计算机病毒
      人为的故障或者破坏
  • 恢复
    • 基本原理:冗余
      数据库中一部分被破坏或不正确的数据可以根据存储在系统别处的冗余数据来重建
    • 基本技术:复杂
  • 恢复机制涉及的两个关键问题
    • 如何建立冗余数据
    • 如何利用这些冗余数据实施数据库恢复
  • 建立冗余常用的技术
    • 数据转储
      转储即DBA定期地将整个数据库复制到磁带、磁盘或其他介质上保存起来的过程

      • 备用的数据称为后备副本或后援副本(即备份)
      • 重装后备副本只能将数据库恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务(维持 持续性)
      • 按转储时的数据库状态分为:
        • 静态转储:在系统中无运行事务时进行转储操作
          转储操作开始的时刻数据库处于一致性状态,而转储期间不允许(或不存在)对数据库的任何存取、修改活动。
          ➠静态转储得到的一定是数据一致性的副本
          • 优点:简单
          • 缺点:降低数据库的可用性
        • 动态转储:指转储期间运行对数据库进行存取或修改
          转储和用户事务可以并发执行
          ➠必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件
          • 优点:不用等待正在运行的用户事务结束,也不会影响新事务的运行
          • 缺点:转储结束时后援副本上的数据不能保证正确有效(可能时已过时的数据)
      • 按转储方式
        • 海量转储:每次转储全部数据库
        • 增量转储:每次只转储上一次转储后更新的数据
          从恢复角度看,海量转储 恢复一般更方便;若数据库很大,事务处理频繁,则增量转储更实用有效在这里插入图片描述
          在数据转储效率、数据库运行效率、故障恢复效率三方面各有利弊(不能简单的说孰优孰劣)。DBA通常会根据数据库使用情况,确定一个适合的转储周期,并配合使用这四类方法
    • 登记日志文件
      日志文件是用来记录事务对数据库的更新操作的文件

      • 日志文件的作用
        • 进行事务故障恢复
          事务故障恢复和系统故障恢复必须用日志文件
        • 进行系统故障恢复
          在动态转储方式中必须建立日志文件。后备副本和日志文件结合起来才能有效地恢复数据库
        • 协助后备副本进行介质故障恢复
          在静态转储方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时 尚未完成的事务 进行撤销处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态
      • 登记日志文件的两条原则
        • 登记的次序严格按并发事务执行的时间次序
        • 必须先写日志文件,后写数据库
          • 先写日志文件原因
            • 把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
            • 如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。

  • 事务故障的恢复
    • 事务故障: 事务在运行至正常终止点前被终止
    • 恢复方法:恢复子系统应利用日志文件撤销(UNDO)此事务已对数据库进行的修改。
    • 事务故障的恢复是由系统自动完成的,对用户是透明的(事务故障&系统故障 透明,介质故障需要DBA介入)
    • 系统的恢复步骤
      • 反向扫描日志文件,查找该事务的更新操作
      • 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。(当记录中是插入操作,则相当于做删除操作(“更新前的值”为空);若记录中是删除操作,则做插入操作;若是修改操作,则相当于用修改前值代替修改后值)直至读到此事务的开始标记,该事务故障的恢复就完成了。
  • 系统故障的恢复
    • 系统故障造成数据库不一致状态的两个原因:
      • 未完成事务对数据的更新 可能已写入数据库(破坏原子性)
      • 已提交事务对数据库的更新 可能还留在缓冲区还没来得及写入数据库(破坏持久性)
    • 恢复操作:撤销Undo故障发生时未完成的事务,重做Redo已完成的事务
    • 系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预
    • 系统的恢复步骤
      • 正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做队列;找出故障发生时 尚未完成的事务,将其事务标识记入撤销队列
      • 对撤销队列中的各个事务进行撤销处理
      • 对重做队列中的各个事务进行重做处理
  • 介质故障的恢复
    • 恢复方法:重装数据库,重做已完成的事务
    • 介质故障的恢复需要DBA介入,但DBA只需重装最近转储的数据库副本和有关的个日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成
    • 系统的恢复步骤
      • 装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转 储时的一致性状态。
      • 装入转储结束时刻的日志文件副本
      • 启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。

  • 检查点记录:一类新的日志记录
    • 检查点记录的内容
      • 建立检查点时刻所用正在执行的事务清单
      • 这些事务最近一个日志记录的地址
    • 动态维护日志文件的方法:周期性地执行建立检查点、保存数据库状态的操作
      • 具体步骤:
        (1)将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上
        (2)在日志文件中写入一个检查点记录
        (3)将当前数据缓冲区的所有数据记录写入磁盘的数据库中
        (4)把检查点记录在日志文件中的地址写入一个重新开始文件
    • 使用检查点方法可以改善恢复效率
    • 系统使用检查点方法进行恢复的步骤是
      (1)从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录
      (2)由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST
      建立两个事务队列
      UNDO-LIST
      REDO-LIST
      把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。
      (3)从检查点开始正向扫描日志文件,直到日志文件结束
      如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列
      如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列;直到日志文件结束
      (4)对UNDO-LIST中的每个事务执行UNDO操作
      对REDO-LIST中的每个事务执行REDO操作

  • 数据库镜像
    数据库管理系统自动把数据库或者其中的关键数据复制到另一个磁盘上
    数据库系统自动保证镜像数据和主数据的一致性,每当主数据更新时,数据库管理系统自动把更新后的数据复制过去。
  • 数据镜像作用
    • 出现介质故障时:
      • 可由镜像磁盘继续提供使用
      • 同时数据库管理系统自动利用镜像磁盘数据进行数据的恢复
      • 不需要关闭系统和重装数据库副本
    • 没出现介质故障时:
      • 可用于并发操作
      • 一个用户加排它锁修改数据,其他用户可以读镜像数据库上的数据而不必等待该用户释放锁

课后题

1.试述事务的概念及事务的四个特性,恢复技术能保证事务那些特性?

  • 事务是指用户定义的数据库操作
  • 其具有原子性(事务要么做完,要么不做)、一致性(事务要么处于做前、要么做后的状态)、隔离性(事务之间隔离不打扰)、持续性(事务对数据库中数据改变是永久的)
  • 恢复技术可以保证事务的原子性和一致性

2.为什么事务非正常结束时会影响数据库数据的正确性,举例说明

  • 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
  • 例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。则可以定义一个事务T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。

3.登记日志文件时为什么必须先写日志文件,后写数据库?

  • 把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
  • 如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。

6.针对不同的故障,试给出恢复的策略和方法(事务故障恢复/系统故障恢复/介质故障恢复)

  • 事务故障的恢复步骤
    • 反向扫描文件日志,查找该事务的更新操作。
    • 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。直至读到此事务的开始标记,该事务故障的恢复就完成了。
  • 系统故障的恢复步骤
    • 正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。
    • 对未完成的事务队列中的各个事务进行UNDO处理。
    • 对已经提交的事务队列中的各个事务进行REDO处理
  • 介质故障的恢复步骤
    • 装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。
    • 装入转储结束时刻的日志文件副本
    • 启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。

7.什么是检查点记录,包括哪些内容

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

8.具有检查点的恢复技术有什么优点?举例

利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量的时间。此外,需要REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,恢复子系统又重新执行了这些操作,浪费了大量时间。检查点技术就是为了解决这些问题。

9.使用检查点方法进行恢复的步骤。

① 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
② 由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。
这里建立两个事务队列:
UNDO-LIST: 需要执行undo操作的事务集合
REDO-LIST: 需要执行redo操作的事务集合
把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。
③ 从检查点开始正向扫描日志文件
如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列
如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束
④ 对UNDO-LIST中的每个事务执行UNDO操作, 对REDO-LIST中的每个事务执行REDO操作

10.什么是数据库镜像?它有什么用途?

  • 数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
  • 数据库镜像的用途
    • 用于数据库恢复。当出现介质故障时,镜像磁盘可继续使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
    • 提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/337504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制造业升级转型:制造业上市公司-智能制造词频统计数据集

发展智能制造,关乎中国制造业转型升级的成效。基于中国制造业上市公司年报,通过文本数据挖掘,提取关键词反映企业对智能制造的关切焦点,进而运用词频及共词网络分析,洞察中国智能制造的发展态势。 研究发现&#xff0…

OpenAI最重要的模型【CLIP】

最近的 AI 突破 DALLE和 Stable Diffusion有什么共同点? 它们都使用 CLIP 架构的组件。 因此,如果你想掌握这些模型是如何工作的,了解 CLIP 是先决条件。 此外,CLIP 已被用于在 Unsplash 上索引照片。 但是 CLIP 做了什么&…

若依框架---为什么把添加和更新分成两个接口

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

SpringCloud-Netflix学习笔记11——Hystrix实现服务降级

服务降级 是什么? 整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。 如下图,在某一个时间段,访问服务A的请求特别多,而访问服务B和服务C的请求特别少,这时我们可以把…

实战打靶集锦-004-My-Cmsms

**写在前面:**记录一次艰难曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 WEB服务探查4.1.1 浏览器访问4.1.2 目录枚举4.1.3 控制台探查4.1.4 其他目录探查4.2 阶段小结5. 公共EXP搜索5.1 CMS搜索5.2 Apache搜索5.3 PHP搜索5.4 MySQL搜索5…

DaVinci:色度 - 亮度网格

调色页面:色彩扭曲器 Color:Color Warper相对于色相 - 饱和度网格,色度 - 亮度 Chroma - Luma网格在颜色的亮度控制上更加灵活。◆ ◆ ◆工作原理分析色度 - 亮度网格来自色彩空间三维模型中圆柱体垂直切分的两个 90 交叉的纵向平面。网格上…

介绍架构分类、设计及架构师工作

title: 介绍架构分类、设计及架构师工作 date: 2019-06-07 13:49:00 tags: 架构分类架构设计功能设计架构师 categories:架构 介绍 本文从理论上分析、梳理架构相关知识,帮助自己更好的理解架构工作。 什么是架构和架构分类 什么是架构 关于架构的定义业界有太多…

致敬白衣天使,学习Python读取

名字:阿玥的小东东 学习:Python、c 主页:阿玥的小东东 故事设定:现在学校要求对所有同学进行核酸采集,每位同学先在宿舍内等候防护人员(以下简称“大白”)叫号,叫到自己时去停车场排…

JDK 8 JVM内存结构详解

前言 本文所介绍的是 JDK 1.8 版本,其他版本的 JDK 在这里并不一定正确;内容主要摘自周志明的《深入理解Java虚拟机》一书的关键点,并根据自身的理解进行记录。感兴趣的同学可以去阅读原著。 JVM 的内存结构,主要包括以下 5 个区…

Jupyter 插件配置和主题设置

Jupyter 插件配置和主题设置 前提需要暗转Anaconda 或者系统已有Jupyter。 即使想在conda 虚拟环境中使用Jupyter 也不用在虚拟环境中重新安装和配置Jupyter相关包。 在base环境中,下载插件管理包: pip install jupyter_contrib_nbextensions -i htt…

开源项目 —— 原生JS实现斗地主游戏 ——代码极少、功能都有、直接粘贴即用

目录 效果如下 目录结构 GameEntity.js GrawGame.js konva.min.js PlayGame.js veriable.js index.html 结语: 前期回顾 卡通形象人物2 写代码-睡觉 丝滑如德芙_0.活在风浪里的博客-CSDN博客本文实现了包含形象的卡通小人吃、睡、电脑工作的网页动画https://…

【Pytorch项目实战】之语义分割:U-Net、UNet++、U2Net

文章目录博主精品专栏导航一、前言1.1、什么是图像分割?1.2、语义分割与实例分割的区别1.3、语义分割的上下文信息1.4、语义分割的网络架构二、网络 数据集2.1、经典网络的发展史(模型详解)2.2、分割数据集下载三、算法详解3.1、U-Net3.1.1、…

oceanbase部署--使用OBD自动化部署三节点集群

准备步骤: 先将192.168.152.30 现有单节点集群stop,然后克隆两台虚拟机并在workstations重置网卡MAC,配置新主机IP [adminoceanbase ~]$ obd cluster list ---------------------------------------------------------------------- | …

【C语言学习笔记】:函数和对象

一、本篇要学习的内容和知识结构概览 二、知识点逐条分析 1. 混合型语言 C源文件的文件扩展名为.cpp, 也就是c plus plus的简写, 在该文件里有且只能有一个名为main的主函数, 它作为程序的入口. 因为这个主函数的存在, 所以C被称为混合型语言. 2. C语言当中的注释 第一种: …

[单片机框架][调试功能] 回溯案发现场

程序莫名死机跑飞,不知道问题,那么下面教你回溯错误源 回溯案发现场一、修改HardFault_Handler1. xx.s 在启动文件,找到HardFault_Handler。并修改。2. 定义HardFault_Handler_C函数。(主要是打印信息并存储Flash)3. 根…

javascript测试题

一、填空题 1. JavaScript 有两种引用数据类型 :___数组__、_____对象_ __。2. Javascript 通过___setTimeout______延迟指定时间后,去执行某程序。 3. Javascript 里 String 对象通过____indexOf____方法取第一次出现子字符 串的字符位置。4. Javascrip…

动态规划-背包问题

文章目录一、背包问题1. 背包问题简介2. 背包问题解决方法二、01 背包问题1. 实现思路2. 实现代码三、完全背包问题1. 实现思路2. 实现代码四、多重背包问题(一)1. 实现思路2. 实现代码五、多重背包问题(二)1. 实现思路2. 实现代码…

【C++之容器篇】精华:vector常见函数的接口的熟悉与使用

目录前言一、认识vector1. 介绍2. 成员类型二、默认成员函数(Member functions)1. 构造函数2. 拷贝构造函数vector (const vector& x);3. 析构函数4. 赋值运算符重载函数三、迭代器(Iterators)1. 普通对象的迭代器2. const对象…

4.5.3 ArrayList

文章目录1.特点2. 练习:ArrayList测试3.ArrayList扩容1.特点 存在java.util包中内部是用数组结构存放数据,封装数组的操作,每个对象都有下标内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长查询快,增删数据效率会低 2. 练习:ArrayList测试 package partThree;import…

ROS2机器人编程简述humble-第四章-COMPUTATION GRAPH .2

下图所示,机器人和障碍物直接距离:可以看到如果是单线雷达,这种测距和传感器安装的位置密切相关。chatgpt:ROS2机器人的COMPUTATION GRAPH概念是指,通过构建一个图形结构,将机器人的计算任务分解成一系列的…