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

文章目录

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

数据库恢复技术

事务的基本概念

什么是事务

  • 事务使用户定义的一个数据库操作序列,这些操作要么全做,要么一个都不做,是一个不可分割的工作单位。
  • 事务和程序是两个概念
  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.mzph.cn/diannao/32074.shtml

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

相关文章

Vue实现无限滚动加载更多内容(懒加载)或实现查看更多按钮

在Vue中实现无限滚动加载更多内容&#xff0c;通常可以使用vue-infinite-loading插件。以下是一个简单的例子&#xff1a; 1、首先&#xff0c;安装vue-infinite-loading&#xff1a; npm install vue-infinite-loading --save2、在Vue组件中使用它&#xff1a; <templat…

【设计模式之策略模式 -- C++】

策略模式 – 算法替换&#xff0c;灵活变化 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。这种模式主…

Android系统 无法绑定1024以下端口问题

一&#xff0c;前言 在Android系统中&#xff0c;默认情况下&#xff0c;普通应用程序无法绑定到1024以下的端口&#xff08;即特权端口&#xff09;&#xff0c;这是出于安全考虑而设计的。这种限制是为了防止普通应用程序伪装成系统服务或者使用系统服务的特权端口&#xff…

kotlin类

一、定义 1、kotlin中使用关键字class 声明类,如果一个类没有类体&#xff0c;也可以省略花括号&#xff0c; 默认为public 类型的&#xff1a; // 这段代码定义了一个公开的、不可被继承的Test类 class Test{} // 没有类体&#xff0c;可以省略花括号 class Test 底层代码&…

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发&#xff08;发布&#xff09;-SelectCamelWords[选中驼峰单词]&#xff08;idea源代码&#xff09; 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址&#xff1a;https://github.com/yangfeng…

Mybatis框架的缓存

Mybatis框架的缓存 一.为什么使用缓存 缓存(cache&#xff09;的作用是为了减去数据库的压力&#xff0c;提高查询性能。缓存实现的 原理是从数据库中查询出来的对象在使用完后不要销毁&#xff0c;而是存储在内存&#xff08;缓存&#xff09; 中&#xff0c;当再次需要获取…

windows-docker-本地部署-前端

前置条件 docker已有需要打包的文件也已经写好了 打包镜像 ip地址修改 需要根据自身修改的文件 .env.local文件存放你前端访问的端口 172.24.240.1:这部分是自己电脑的ip 如何查看本机ip&#xff0c;使用IPV4的地址。 #本地 #API_HOST_URLhttp://172.24.240.1:8091打包文…

Ubuntu下 Tailscale的安装配置与优化

今天&#xff0c;我在阿贝云的免费云服务器上进行了Tailscale的部署测试。说实话&#xff0c;这家免费云服务器真的不错,配置也算不错(1核CPU、1G内存、10G硬盘、5M带宽)。作为一个完全免费的云服务器,已经满足了我的大部分需求了,真的很感谢阿贝云提供这样一个优质的免费服务!…

Excel导出实例

在上一节的基础上&#xff0c;本文演示下如何导出excel数据。 Excel导出操作演示 继承ocean-easyexcel SDK <dependency><groupId>com.angel.ocean</groupId><artifactId>ocean-easyexcel</artifactId><version>1.0.0</version> …

架构设计 - 网站性能优化之静态资源CDN配置

摘要: web 应用业务缓存通常3级: 一级缓存:JVM 本地缓存 二级缓存:Redis集中式缓存 三级缓存:Nginx Proxy Cache 缓存 或 Nginx Lua 缓存 四级缓存:静态资源CDN缓存 页面静态化 本文主要分享 怎样通过CDN缓存静态资源的方式 提高系统性能和响应速度。 WEB应用通过CD…

【机器学习】正则卷积群理论及Python代码实现

1. 引言 1.1.卷积神经网络CNN 卷积神经网络&#xff08;CNN&#xff09;的数学模型是深度学习中用于处理图像和其他高维数据的关键组成部分。那么&#xff0c;CNN究竟是什么呢&#xff1f; 总结起来&#xff0c;CNN网络主要完成以下操作&#xff1a; 卷积操作&#xff08;Co…

【专业英语 复习】第11章 Databases

1. In the ____ database, data elements are stored in different tables, each of which consists of rows and columns. A. network B. hierarchical C. relational D. object-oriented 正确答案&#xff1a;C 在关系数据库中&#xff0c;数据元素存储在不同的表中&#xff…

无线麦克风一拖二哪个牌子好,揭秘目前音质最好的麦克风

在自媒体的世界里&#xff0c;无线领夹麦克风已经成了一种标准配置&#xff0c;它受到广大视频创作者的青睐。无论是刚刚踏入短视频领域的新手&#xff0c;还是已经拥有丰富经验的资深博主&#xff0c;都深知一款好的领夹麦克风对于提升视频音频质量的重要性。它不仅能帮助创作…

帆软FCA-FineReport入门考试

Part.1&#xff1a;判断题 &#xff08;总分&#xff1a;56分 得分&#xff1a;42&#xff09; 第1题 判断题 进行决策系统平台目录管理时&#xff0c;链接的地址可以选择使用相对路径或绝对路径(得分&#xff1a;2分 满分&#xff1a;2分) 正确答案&#xff1a;A 你的答案&am…

SQLCMD完全指南:掌控 SQL Server

SQL Server 拥有被广泛认可的一流管理工具——SQL Server Management Studio&#xff08;简称 SSMS&#xff09;。它提供了丰富的功能&#xff0c;极大地简化了开发人员和数据库管理员&#xff08;DBA&#xff09;的工作。 目录 SQLCMD 入门使用 SQLCMD 连接 SQL ServerSQLCMD …

Java和C语言中基础概念中的区别有哪些?

Java和C语言中基础概念中的区别有哪些&#xff1f; 标识符数据类型运算符加号%号& 和 | 关系表达式函数声明代码规范数组 以下是Java和C语言在一些基础概念中的区别&#xff08;不包含面向对象等的高级知识&#xff09; 标识符 在Java中&#xff0c;标识符可以由数字、字母…

【Java】字节数组 pcm 与 wav 格式互转(附原理概述)

前言 最近实现了一个文字转语音的功能&#xff0c;语音引擎返回的是pcm格式的数据。需要转化成wav格式前端才能播放。本文首先会给出解决方案&#xff0c;后续会讲背后的原理。 场景 1. pcm wav 转化工具类 入参和出参都为byte[]&#xff0c;理论上有了 byte[] 就可以输出…

基于单片机的智能窗户控制系统的设计

摘 要&#xff1a; 根据单片机技术和现代传感器技术 &#xff0c; 本文主要针对基于单片机的智能窗户控制系统的设计进行探讨 &#xff0c; 仅供参考 。 关键词&#xff1a; 单片机 &#xff1b; 智能窗户 &#xff1b; 控制系统 &#xff1b; 设计 在现代科学技术持续发展的带…

面完小红书算法岗,心态崩了。。。

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。提前准备才是完全之策。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c…

Python爬虫基础以及示例讲解

爬虫简介 网络爬虫 爬虫指在使用程序模拟浏览器向服务端发出网络请求&#xff0c;以便获取服务端返回的内容。 但这些内容可能涉及到一些机密信息&#xff0c;所以爬虫领域目前来讲是属于灰色领域&#xff0c;切勿违法犯罪。 爬虫本身作为一门技术没有任何问题&#xff0c;关…