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

news2024/12/26 9:31:11

文章目录

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

数据库恢复技术

事务的基本概念

什么是事务

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

如何定义事务:

--显示定义方式
 begin transaction 
      sql 语句1
      sql 语句2
      …… 
 commit
--隐式定义
 begin transaction 
      sql 语句1
      sql 语句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.coloradmin.cn/o/1850234.html

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

相关文章

步步精:连接器领域的卓越品牌

自1987年成立以来,步步精坐落于美丽的旅游城市——温州市乐清虹桥镇,被誉为“国家电子主体生产基地”、“国家精密模具制造基地”。公司拥有7大厂区、9大事业部,800名专职员工,致力于提供高品质的连接器解决方案。注册商标“BBJCO…

数据库精选题(三)(SQL语言精选题)(按语句类型分类)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀数据库 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 创建语句 创建表 创建视图 创建索引…

【机器学习】基于Softmax松弛技术的离散数据采样

1.引言 1.1.离散数据采样的意义 离散数据采样在深度学习中起着至关重要的作用,它直接影响到模型的性能、泛化能力、训练效率、鲁棒性和解释性。 首先,采样方法能够有效地平衡数据集中不同类别的样本数量,使得模型在训练时能够更均衡地学习…

开启声音的奇幻之旅:AI声音变换器的魔法秘籍与创意应用

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/这个充满科技魔力的时代,AI Voice Changer 就像一把神奇的钥匙,能为我们打开声音的魔法之门。今天,就让我带你…

在线教育系统源码入门:教育培训小程序开发全流程

本篇文章,笔者将详细介绍在线教育系统源码的入门知识,并带领大家了解教育培训小程序的开发全流程。 一、在线教育系统的基本概念 一个完整的在线教育系统应具备以下几个模块: 用户管理 课程管理 教学互动 支付模块 数据统计 二、开发工…

【开发】内网穿透ztncui搭建私有节点

文章目录 写在前面一键部署ztnuci记录后续 写在前面 前面搭建moon节点转发的确会降低延迟,但是总有出现moon节点解析不成功的例子,于是疯狂寻找答案是为什么?终于在知乎上找到这样一个答案。 一键部署ztnuci 参考这篇很完善的教程和贴心的…

小i机器人:总负债5.31亿,员工数量在减少,银行借款在增加,净利润已下降-362.68%

小i机器人:总负债5.31亿,员工数量在减少,银行借款在增加,总收入在增长,净利润已下降-362.68% 来源:猛兽财经 作者:猛兽财经 目录 一、小i机器人公司介绍 二、小i机器人过去20年的发展历程和取得的成就 三、小i机器人的产品和技术架构 四、小i机器人…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-24深度卷积神经网络AlexNet

24深度卷积神经网络AlexNet import torch from torch import nn import liliPytorch as lp import liliPytorch as lp import matplotlib.pyplot as pltdropout1 0.5 #Alexnet架构 net nn.Sequential(nn.Conv2d(1, 96, kernel_size11, stride4, padding1),nn.ReLU(),nn.MaxPo…

29-Linux--守护进程

一.基础概念 1.守护进程:精灵进程,在后台为用户提高服务,是一个生存周期长,通常独立于控制终端并且周期性的执行任务火处理事件发生 2.ps axj:查看守护进程 3.进程组:多个进程的集合,由于管理…

# 消息中间件 RocketMQ 高级功能和源码分析(十一)

消息中间件 RocketMQ 高级功能和源码分析(十一) 一、消息中间件 RocketMQ 源码分析: 拉取消息长轮询机制 1、消息拉取长轮询机制分析 RocketMQ 未真正实现消息推模式,而是消费者主动向消息服务器拉取消息,RocketMQ …

LeetCode80. 删除有序数组中的重复项 II题解

LeetCode80. 删除有序数组中的重复项 II题解 题目链接: https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/ 题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素…

基于uniapp的h5接入企业微信客服在线聊天

首先说下企业微信接入场景,支持的接入场景有以下几种,基本上涵盖了微信生态大部分场景: 接入步骤 1.创建企业微信号 按照官方操作步骤注册,需要注意的是未认证仅支持接入100人,已认证支持接入2000人. 2.创建客服账号 每个客服账号支持配置人工或是机器人或是人工机器人回复…

艾尔登法环黄金树幽影/ELDEN RING Shadow of the Erdtree(全DLC)

百度网盘 https://pan.baidu.com/s/1ulKiNQdVtV5dto-Vm7k4IA 提取码:yqrs 游戏介绍 《艾尔登法环》是一款以正统黑暗奇幻世界为舞台的动作RPG游戏。走进辽阔的场景与地下迷宫探索未知,挑战困难重重的险境,享受克服困境时的成就感吧。…

【单元测试】Spring Boot 的测试库

Spring Boot 的测试库 1.了解回归测试框架 JUnit2.了解 assertThat3.了解 Mockito4.了解 JSONPath5.测试的回滚 单元测试(unit test)是为了检验程序的正确性。一个单元可能是单个 程序、类、对象、方法 等,它是应用程序的最小可测试部件。 单…

如何修复“AI的原罪”

如何修复“AI的原罪” 上个月,《纽约时报》声称,科技巨头OpenAI和谷歌不顾服务条款和版权法的禁止,将大量YouTube视频转录成文本,并将其用作人工智能模型的额外训练数据,从而进入了版权灰色地带。《纽约时报》还援引Me…

HTML(18)——浮动

标准流 标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个 浮动 作用:让块级元素水平排列 属性名:float 属性值 left:左对齐right&#…

高通安卓12-ADB操作

1.ADB安装 从网上下载一个adb工具 如: https://dl.google.com/android/repository/platform-tools_r31.0.2-windows.zip 解压出来 增加一个环境变量 查看安装情况 2.设备连接 从网上下载ADB工具 1.进入命令行,查询设备状态 adb devices 2.进入shel…

【硬件开发】共模电感

为什么电源无论直流还是交流的输入端都需要一个共模电感 图中L1就是共模电感,长下面这个样子,两侧的匝数,线径和材料都是一模一样的 共模电感的作用是为了抑制共模信号 抑制共模信号工作原理 http://【共模电感是如何抑制共模信号的】https…

视频讲解|基于模型预测算法的含储能微网双层能量管理模型【mpc】

1 主要内容 该讲解视频对应的免费程序链接为【防骗贴】基于模型预测算法的含储能微网双层能量管理模型,主要做的是一个微网双层优化调度模型,微网聚合单元包括风电、光伏、储能以及超级电容器,在微网的运行成本层面考虑了电池的退化成本&…

AT32F435 入门使用

AT32F435 入门使用 🔖这里以AT32F435RGT7作为测试对象,创建基于Keil平台编译的代码工程。📍相关篇《基于AT32_Work_Bench配置AT32工程》 ✨由于AT32F435RGT7(LQFP-64封装)引脚与STM32F405RGT6TR引脚兼容程度&#xff1…