数据库恢复

news2024/11/15 18:29:21

文章目录

  • 前言
  • 一、事务
    • 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:事务在故障发生时还未完成,所以予以撤销。

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

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

相关文章

【机器学习笔记】基于实例的学习

基于实例的学习 文章目录 基于实例的学习1 基本概念与最近邻方法2 K-近邻(KNN)3 距离加权 KNN4 基于实例/记忆的学习器5 局部加权回归5 多种回归方式对比6 懒惰学习与贪婪学习 ​ 动机:人们通过 记忆和行动来推理学习。 1 基本概念与最近邻方…

Cubase学习:音频转midi

大家好!我是诗书画唱!今天要分享的小技巧就是Cubase中的音频转midi的功能!希望对你有所帮助!以后我会在这个账号分享自己知道的很多小技巧!关注我!不迷路!大家也可以关注我后,在我的空间搜索关键词,找到各种对应的教程进行学习,非常的方便!而且自己的教程会尽可能纠…

数据结构~~树(2024/2/8)

目录 树 1、定义: 2、树的基本术语: 3、树的表示 树 1、定义: 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&…

《动手学深度学习(PyTorch版)》笔记8.4

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

C++初阶:适合新手的手撕vector(模拟实现vector)

上次讲了常用的接口:C初阶:容器(Containers)vector常用接口详解 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数(constructor)4.基本函数(size(),capacity(),resize(),reserve())4.增…

Android---Jetpack Compose学习002

Compose 布局。Compose 布局的目标:1)实现高性能;2)让开发者能够轻松编写自定义布局;3)在 Compose 中,通过避免多次测量布局子级可实现高性能。如果需要进行多次测量,Compose 具有一…

【MySQL】数据库的基础——数据库的介绍、MySQL的介绍和架构、SQL分类、MySQL的基本使用、MySQL的存储引擎

文章目录 MySQL1. 数据库的介绍1.2 主流数据库 2. MySQL的介绍2.1 MySQL架构2.2 SQL分类2.3 MySQL的基本使用2.4 MySQL存储引擎 MySQL 1. 数据库的介绍 数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计…

安装了多个Java版本如何指定特定版本

Java版本问题的实战场景 机器安装了一个JDK 8的安装版本,默认的安装路径是 C:\Program Files\Java,JDK的安装版本同时安装了JDK 和JRE, 安装的路径分别是: JDK 路径: C:\Program Files\Java\jdk1.8.0_361JRE 路径: C…

Java图形化界面编程——菜单组件 笔记

2.7 菜单组件 ​ 前面讲解了如果构建GUI界面,其实就是把一些GUI的组件,按照一定的布局放入到容器中展示就可以了。在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用…

在 Windows上恢复删除照片的 4 种有效方法

您是否曾在 Windows 7/8/10/11 中不小心删除过照片?如何轻松快速地恢复已删除的照片?在这里这篇文章列出了几种在Windows 11/10/8/7中恢复已删除照片的可行方法,而MiniTool数据恢复软件 是丢失照片恢复的最佳选择。 意外删除的照片 根据一项…

【深度学习每日小知识】卷积神经网络(CNN)

在深度学习领域,卷积神经网络(CNN)彻底改变了视觉分析领域。凭借从图像中提取复杂模式和特征的能力,CNN 已成为图像分类、目标检测和面部识别等任务不可或缺的一部分。本文全面概述了 CNN,探讨了其架构、训练过程、应用…

《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)

文章目录 5.1 CSS 过渡基础:网页的微妙舞步5.1.1 基础知识5.1.2 重点案例:按钮悬停效果5.1.3 拓展案例 1:渐变显示导航菜单5.1.4 拓展案例 2:动态调整元素大小 5.2 关键帧动画:编排你的网页芭蕾5.2.1 基础知识5.2.2 重…

宠物空气净化器哪个牌子好?养猫家庭如何挑选宠物空气净化器?

养猫的朋友都知道,猫咪掉毛是一个令人头痛的问题。猫毛和皮屑会漂浮在空气中,不仅遍布全屋的各个角落,而且清理起来也非常麻烦,特别是那些难以清除的猫毛。更糟糕的是,这些猫毛还可能引发人们的过敏反应,如…

Netty源码系列 之 HashedWheelTimer源码

Netty优化方案 之前总结NioEventLoop以及其他内容时,已经总结了Netty许多优化的设计方案。 1.Selector的优化 (1) 为epoll空转问题提供了解决思路,虽然并没有从根本上解决epoll空转问题,但是使用一个计数器的方式可以减少空转所带来的性能…

[word] word如何打印背景和图片? #微信#其他#经验分享

word如何打印背景和图片? 日常办公中会经常要打印文件的,其实在文档的打印中也是有很多技巧的,可以按照自己的需求设定,下面给大家分享word如何打印背景和图片,一起来看看吧! 1、打印背景和图片 在默认的…

【数据结构与算法】【小白也能学的数据结构与算法】迭代算法专题

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《数据结构与算法:初学者入门指南》📘&am…

面向数据报编程-UDP协议

目录 前言: 1.UDP协议API 1.1UDP编程原理 1.2DatagramSocket类 (1)DatagramSocket构造方法 (2)DatagramSocket普通方法 1.3DatagramPacket类 (1)DatagramPacket构造方法 (2…

电商小程序03登录页面开发

目录 1 创建应用2 创建页面3 首页功能搭建4 登录页搭建5 设置叠加效果总结 小程序开发在经过需求分析和数据源设计之后,就可以进入到页面开发的阶段了。首先我们需要开发登录的功能。 登录功能要求用户输入用户名和密码,勾选同意用户协议和隐私协议&…

SAP-PS-02-004利润中心移除分配公司代码

问题描述 在用KE51创建利润中心时,如果不采用“参考创建”的方式,SAP默认将所有公司代码分配给此利润中心。 上图中,L100003利润中心分配了1000、1001、1002公司,但是实际需求是:L100003只需要分配1000公司。 解决方法…

elasticsearch增删改查

一、数据类型 1、字符串类型 (1)text (2)keyword 2、数值类型 (1)long、integer、short、byte、float、double 3、日期类型 (1)date 4、布尔类型 (1&#xff0…