数据库恢复

文章目录

  • 前言
  • 一、事务
    • 1.概念
    • 2.定义语句
    • 3.ACID特性
  • 二、数据库恢复的必要性
    • 1.为什么要进行数据库恢复
    • 2.数据库恢复机制的作用
  • 三、数据恢复使用的技术
    • 1.数据转储
    • 2.登记日志文件
  • 四 、不同故障的数据恢复策略
    • 1.事务内部的故障
    • 2.系统故障
    • 3.介质故障
  • 五、具有检查点的恢复技术
    • 1.检查点的意义
    • 2.通过检查点确定的不同的恢复策略


前言

试图用最通俗易懂的语言整理数据库恢复这一章节的笔记,麻烦看官老爷点赞关注支持一下动力猿吧!


一、事务

1.概念

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。

事务和程序是两个概念。一般地讲,一个程序中包含多个事务。

2.定义语句

在SQL 中,定义事务的语句一般有三条:
BEGIN TRANSACTION;
COMMIT;
ROLLBACK;

事务通常是以 BEGIN TRANSACTION 开始,以COMR
MIT或ROLLBACK结束。

COMMIT 表示提交事务的所有操作,意味着事务正常结束,将事务中所有对数据库的更新写回到磁盘上的物理数据库中去。

ROLLBACK表示回滚事务的所有操作,意味着事务运行的过程中发生了某种故障不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销回滚到事务开始时的状态。

上面所说的操作指对数据库的更新操作。

3.ACID特性

事务具有4个特性:原子性(Atomicity)、 一致性(Consisteney)、 隔离性(Isolation)和持续性(Durability)。 这4个特性简称为ACID特性。

(1)原子性:事务是数据库逻辑工作的最小单位,事务中的操作要么都做,要么都不做。

(2)一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障有事务被迫中断,这些事务虽然未成功完成,但是它们对数据库的修改有一部分也已经写入物理数据库,这时数据库就处于一种不一致的状态。

(3)隔离性:一个事务的内部操作及使用的数据对其他并发事务是隔离的,也就是说并发执行的各个事务之间不能相互干扰。

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

二、数据库恢复的必要性

1.为什么要进行数据库恢复

在这里插入图片描述因此数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(也称一致状态)的功能,这就是数据库的恢复。

2.数据库恢复机制的作用

(1)将数据库系统恢复到故障发生前数据库的某个一致的状态。
(2)保证事务的原子性、持久性。
(3)提供高可用性(将崩溃后的数据库的不可用时间减少到最低)。

三、数据恢复使用的技术

1.数据转储

(1)定义
数据库管理员定期将整个数据库复制到磁带磁盘等存储介质上保存起来,作为后备副本,当数据库被破坏时重装后备副本。

但重装后备副本只能使数据库恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。
在这里插入图片描述
(2)分类
按转储时能否继续操作数据库,可以将数据转储分为动态转储和静态转储。
按每次转储整个数据库还是仅转储上次转储后更新的数据,可以将数据转储分为海量转储和增量转储。
在这里插入图片描述

2.登记日志文件

(1)定义
日志文件是用来记录事务对数据库的更新操作的文件,有两种格式:以记录为单位、以数据块为单位。

我们主要了解以记录为单位的日志文件:
其中每个事务的开始 (BEGIN TRANSACTION)标记 / 结束(COMMIT 或 ROLLBACK)标记 / 更新操作都认为是一个日志记录。
每个日志记录的主要内容包括:事务标识、操作类型、操作对象、旧值、新值。

(2)作用
事务故障恢复和系统故障恢复必须用日志文件。

在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。

在静态转储方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。

(3)登记日志文件的原则
为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:

登记的次序严格按并发事务执行的时间次序
必须先写日志文件,后写数据库

四 、不同故障的数据恢复策略

1.事务内部的故障

事务故障指事务在运行至正常终止点前被终止。
这种情况下恢复子系统应利用日志文件撤销此事务已对数据库进行的修改。
事务故障的恢复是由系统自动完成的。

恢复策略:
反向扫描(从后往前)日志文件,查找到该事务的更新操作即执行逆操作,如此直至读到此事务的开始标记。

2.系统故障

系统故障指造成系统停止运转的任何事件,使得系统要重新启动。
系统故障造成数据库不一致的原因有两个:未完成事务的更新可能已被写入数据库;已提交事务的更新可能还停留在缓冲区没来得及写入数据库。
系统故障的恢复是在系统重启时自动完成的。

恢复策略:正向扫描(从前往后)日志文件,找出在故障发生前已经提交的事务记入重做队列,同时找出故障发生时尚未完成的事务计入撤销队列。然后对撤销队列的各个事务进行撤销处理,对重做队列的各个事务进行重做处理。

3.介质故障

介质故障是最严重的一种故障,也就是外存故障(磁盘损坏、磁头碰撞等),磁盘上的物理数据和日志文件被破坏。
恢复方法是重装数据库,然后重做已完成的事务。

恢复策略:装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。然后装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。

五、具有检查点的恢复技术

1.检查点的意义

检查点是对于登记日志文件的恢复技术来说的,我们知道日志文件中日志记录是按照时间先后顺序排列的,检查点就是在日志文件中某些地方插入的新记录,专门用来标记时间点的。

使用检查点方法可以改善恢复效率。比如当事务T在一个检查点之前提交,T对数据库所有的修改一定都已写入数据库,写入时间是在这个检查点建立之前或在这个检查点建立之时。这样在进行恢复处理时,没有必要对事务T执行重做操作。

2.通过检查点确定的不同的恢复策略

在这里插入图片描述T1:事务在检查点之前提交,不要重做。

T2、T4:事务在检查点之后才提交,所以不能确定事务对数据库所做的修改在故障发生时是否已写入数据库,有可能还在缓冲区中,所以需要重做。

T3、T5:事务在故障发生时还未完成,所以予以撤销。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM学习记录

JVM基础概念 JVM是一个运行在计算机上的程序,负责编译java字节码文件,支持跨平台特性。 java语言为了通过实时解释实现多平台支持,性能相对于C等语言较低,而JVM提供了JIT即时编译进行性能优化。 JVM与JIT JVM负责解释和执行Ja…

13 年后,我如何用 Go 编写 HTTP 服务(译)

原文:Mat Ryer - 2024.02.09 大约六年前,我写了一篇博客文章,概述了我是如何用 Go 编写 HTTP 服务的,现在我再次告诉你,我是如何写 HTTP 服务的。 那篇原始的文章引发了一些热烈的讨论,这些讨论影响了我今…

go安装与设置

开发环境 安装 下载地址 https://golang.org/dl/(国外的可能不能访问) https://studygolang.com/dl(国内网址,推荐) 安装 下载完成后点击运行,一直next,就可以,安装成功后打开winR输入cmd打开命令行输入go env, 输出 证明安装成功 改变$GOPATH $GOPATH是go存储第三方包和编…

《UE5_C++多人TPS完整教程》学习笔记4 ——《P5 局域网连接(LAN Connection)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P5 局域网连接(LAN Connection)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…

精品springboot善筹网(众筹)互助前后台购物商城实现设计

《[含文档PPT源码等]精品基于springboot善筹网(众筹)前后台实现设计[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: Java——涉及技术: 前端使用技术&#xf…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(八)(4)

实验八:近似计算 练习四 1.自己设置一种计算欧拉常数近似值的方法,看你对欧拉常数的计算能精确到小数点后多少位? 从示例7的图8.5我们已经得知,只要求出每个小矩形中在函数y1/x以上的部分的面积之和,我们就可以得知…

Seurat - 聚类教程 (1)

设置 Seurat 对象 在本教程[1]中,我们将分析 10X Genomics 免费提供的外周血单核细胞 (PBMC) 数据集。在 Illumina NextSeq 500 上对 2,700 个单细胞进行了测序。可以在此处[2]找到原始数据。 我们首先读取数据。 Read10X() 函数从 10X 读取 cellranger 管道的输出&…

Elasticsearch:使用查询规则(query rules)进行搜索

在之前的文章 “Elasticsearch 8.10 中引入查询规则 - query rules”,我们详述了如何使用 query rules 来进行搜索。这个交互式笔记本将向你介绍如何使用官方 Elasticsearch Python 客户端来使用查询规则。 你将使用 query rules API 将查询规则存储在 Elasticsearc…

【MySQL基础】:深入探索DQL数据库查询语言的精髓(上)

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. DQL1.1 基本语法1.2 基础查询1.3 条件查询1.3 聚合函数 🌤️ 全篇…

cad基础学习

基础操作与设置 切换工作空间 调整鼠标 界面右击,选项 选项中找到显示,十字光标调到最大 当然也可以输入命令op,回车。它会自动打开这个界面 画一个直线 上面选直接,单击俩个点,画出一个直线。然后空格收尾,这就画出…

【JavaScript 漫游】【014】正则表达式通关

文章简介 JS 语言中的 RegExp 对象提供正则表达式的功能。本篇文章旨在对该对象的相关知识点进行总结。内容包括: 正则表达式概述RegExp 对象的实例属性RegExp 对象的实例方法字符串与正则表达式相关的实例方法正则表达式匹配规则 概述 正则表达式的概念 正则表…

将你向chatgpt提问的问题翻译成英文后再提交油猴插件(学英语帮手)

直接上干货: 插件地址: ChatGPT问题翻译助手(基于百度翻译API) 实现效果: 提示:因为是基于百度翻译API实现的,因此首先你得有自己的翻译API,网址如下: 登录百度账号 …

分享66个时间日期JS特效,总有一款适合您

分享66个时间日期JS特效,总有一款适合您 66个时间日期JS特效下载链接:https://pan.baidu.com/s/1niQUpDSs10gfGYKYnEgKRg?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,…

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一,提供了丰富的函数和工具,以便更轻松地处理和分析数据。在本文中,我们将深入探讨Pandas中一系列数据连接、合…

FL Studio如何改变轨道颜色 FL Studio波形颜色如何自定义 flstudio21中文版下载 FL Studio 设置颜色

FL Studio如何改变轨道颜色?FL Studio的轨道颜色可以在播放列表或混音台界面进行修改。FL Studio波形颜色如何自定义?FL Studio的波形文件颜色、名称、图标等信息都是可以自定义的,下文将给大家详细讲述。 一、FL Studio如何改变轨道颜色 在…

C#,铁蛋·奥纳奇数(Geek Onacci Number)的算法与源代码

Geek译为“极客”,不贴切,译为“铁蛋”甚妙! 1 铁蛋奥纳奇数(Geek Onacci Number) 铁蛋奥纳奇数(Geek Onacci Number)也称为“极客纳奇”数列。 极客纳奇数列是组合数学中的一个数字序列。 极客…

Java学习-常用API(二)

Math类及其常用API: 演示: StringBuilder的认识及其常用方法: StringBuilder支持链式编程 StringBuilder sbnew StringBuilder();sb.append(12).append.(“itHeima”&am…

【UE 游戏编程基础知识】

目录 0 引言1 基础知识1.1 拓展:3D数学和计算机图形学的关系 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 游戏编程基础知识】❣️ 寄语:书到用时方恨少,事…

AJAX——常用请求方法

1 请求方法 请求方法:对服务器资源,要执行的操作 2 数据提交 场景:当数据需要在服务器上保存 3 axios请求配置 url:请求的URL网址 method:请求的方法,GET可以省略(不区分大小写) …

微软和苏黎世联邦理工学院开源SliceGPT创新压缩技术节省大量部署资源;OpenAI成立儿童安全团队,防AI误用

🦉 AI新闻 🚀 微软和苏黎世联邦理工学院开源SliceGPT创新压缩技术节省大量部署资源 摘要:微软和苏黎世联邦理工学院研究人员开源了SliceGPT,通过对大模型的权重矩阵进行压缩切片,实现了模型紧缩,节省了部…