数据库系统概论——数据库恢复技术

2024-06-21 22:12

本文主要是介绍数据库系统概论——数据库恢复技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 数据库恢复技术
    • 事务的基本概念
      • 什么是事务
      • 如何定义事务:
      • 事务的特性
    • 数据库恢复概述
    • 故障的种类
    • 恢复的实现技术
    • 恢复策略
      • 事务故障的恢复
      • 系统故障的恢复
      • 介质故障的恢复

数据库恢复技术

事务的基本概念

什么是事务

  • 事务使用户定义的一个数据库操作序列,这些操作要么全做,要么一个都不做,是一个不可分割的工作单位。
  • 事务和程序是两个概念
  1. 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
  2. 一个程序通常包含多个事务。
  • 事务时数据库恢复和并发控制的基本单位。

如何定义事务:

--显示定义方式begin transaction sql 语句1sql 语句2…… commit
--隐式定义begin transaction sql 语句1sql 语句2…… rollback

事务的特性

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability ),我们经常称之为ACID特性。

  • 原子性
    事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

  • 一致性
    事务执行的结果必须是使数据库从一个一致状态变到另一个一致状态。

  • 隔离性
    对并发执行而言,一个事务的执行不能被其他事务干扰。
    一个事务内部的操作及使用的数据对其他并发事务是隔离的。
    并发执行的各个事务之间不能互相干扰。

  • 持续性
    也称永久性
    一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
    接下来的其他操作或故障不应该对其执行结果有任何影响。

数据库恢复概述

故障是不可避免的:

  • 计算机硬件故障
  • 系统软件和应用软件的错误
  • 操作员的失误
  • 恶意的破坏

故障的影响:

  • 造成运行事务非正常中断,影响数据库中数据的正确性。
  • 破坏数据库,使数据库中全部或部分数据丢失。

数据库管理系统对故障的对策

  • DBMS提供恢复子系统。
  • 保证故障发生后,能把数据库中的数据从错误状态+ 恢复到某一已知的正确状态。
  • 保证事务ACID。

恢复技术是衡量系统优劣的重要指标。

故障的种类

(1) 事务内部的故障
某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了。
(2) 系统故障
造成系统停止运转的任何事件,使得系统要重新启动。
(3) 介质故障
介质故障又称为硬故障,这类故障使存储在外存中的数据部分丢失或全部丢失。

各类故障,对于数据库的影响有两种可能性:

  • 一是数据库本身被破坏
  • 二是数据库没有被破坏,但是数据可能不准确。

恢复的实现技术

恢复操作的基本原理:冗余

  • 利用存储在系统其它的房的冗余数据来重建数据库中已经被破坏或不正确的那部分数据。

恢复机制涉及的关键问题

  1. 如何建立冗余数据
    (1) 数据转储
    (2) 登录日志文件
  2. 如何利用这些冗余数据实施数据库恢复。

1. 数据转储
概念:转储是指DBA通过DBMS的恢复子系统,将整个数据库复制到磁带或另一个磁盘上保存起来的过程,这些备用的数据称为后备副本或后援副本。

如何使用?

  • 数据库遭到破坏后可以将后备副本重新装入。
  • 但重装后备副本只能将数据库恢复到转储时的状态。

转储方法:
(1) 静态转储与动态转储

  • 静态转储:在系统中无运行事务时进行转储,转储开始时数据库处于一致性状态,转储期间不允许对数据库的任何存取、修改活动。
  • 动态转储:转储操作与用户事务并发进行转储期间允许对数据库进行存取或修改。

(2) 海量转储与增量转储

  • 静态转储:在系统中无运行事务时进行转储,转储开始时数据库处于一致性状态,转储期间不允许对数据库的任何存取、修改活动。
  • 动态转储:转储操作与用户事务并发进行转储期间允许对数据库进行存取或修改。

在这里插入图片描述

2. 登录日志文件

  1. 什么是日志文件

日志文件(log)是用来记录事务对数据库的更新操作的文件。

  1. 不同数据库系统采用的日志文件格式不完全一样,概括起来日志文件主要又两种格式。
  • 以记录为单位的日志文件。
  • 以数据块为单位的日志文件。
  1. 以记录为单位的日志文件,日志文件中需要登记的内容包括:
  • 各个事务的开始标记(begin transaction)
  • 各个事务的结束标记(commit或rollback)
  • 各个事务的所有更新操作

这里每个事务开始的标记、每个事务的结束标记和每个更新操作均作为日志文件中的一个日志记录 (log record)。

4. 以记录为单位的日志文件,每条日志记录的内容

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

日志文件的用途

  1. 事务故障恢复和系统故障恢复必须用日志文件。
  2. 在动态转储方式中必须建立日志文件,后援副本和日志文件综合起来才能有效地恢复数据库。
  3. 在静态转储方式中,也可以建立日志文件。

恢复策略

事务故障的恢复

  • 事务故障:事务在运行至正常终止点前被中止。
  • 恢复方法
    • 由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。
  • 事务故障的恢复由系统自动完成,不需要用户干预。

事务故障的回复步骤
(1) 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
(2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。

  • 插入操作,“更新前的值”为空,则相当于做删除操作。
  • 删除操作,“更新后的值”为空,则相当于做插入操作。
  • 若是修改操作,则用修改前的值代替修改后的值。

(3) 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
(4) 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了

系统故障的恢复

  • 系统故障造成数据库不一致状态的原因。

    • 一些未完成事务对数据库的更新已写入数据库。
    • 一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库
  • 恢复方法

    • Undo 故障发生时未完成的事务。
    • Redo 已完成的事务。
  • 系统故障的恢复由系统在重新启动时自动完成,不需要用户干预。

介质故障的恢复

  • 恢复步骤
    (1) 装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态
    • 对于静态转储的数据库副本,装入后数据库即处于一致性状态。
    • 对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即redo+undo),才能将数据库恢复到一致性状态。

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

介质故障的恢复需要DBA介入

  • DBA的工作

    • 重装最近转储的数据库副本和有关的各日志文件副本。
    • 执行系统提供的恢复命令。
  • 具体的恢复操作仍由DBMS完成。

这篇关于数据库系统概论——数据库恢复技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082477

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

DM8数据库安装后配置

1 前言 在上篇文章中,我们已经成功将库装好。在安装完成后,为了能够更好地满足应用需求和保障系统的安全稳定运行,通常需要进行一些基本的配置。下面是一些常见的配置项: 数据库服务注册:默认包含14个功能模块,将这些模块注册成服务后,可以更好的启动和管理这些功能;基本的实例参数配置:契合应用场景和发挥系统的最大性能;备份:有备无患;… 2 注册实例服务 注册了实例服务后,可以使用系统服务管理,