数据库系统-故障恢复

news2025/4/6 0:34:40

文章目录

  • 一、数据库故障恢复思路
    • 1.1 故障类型 影响
      • 1.1.1 DMBS运行方式
      • 1.1.2 故障类型
    • 1.2 故障恢复
      • 1.2.1 数据库故障恢复
      • 1.2.2 事务故障恢复
      • 1.2.3 系统故障恢复
      • 1.2.4 介质故障恢复
  • 二、运行日志及其检查点
    • 2.1 DB Log
      • 2.1.1 事务的操作
      • 2.1.2 缓冲区处理策略
    • 2.2 日志记录
  • 三、三种类型的运行日志
    • 3.1 Undo日志
      • 3.1.1 检查点
    • 3.2 Redo日志
    • 3.3 Undo/Redo日志结合
  • 四、利用运行日志进行故障恢复

一、数据库故障恢复思路

1.1 故障类型 影响

1.1.1 DMBS运行方式

利用主存(内存) 和 辅存(外存) 存储体系进行数据库管理
主存中分为:程序数据 + 系统数据
在这里插入图片描述

1.1.2 故障类型

事务故障

  • 某个事务自身运行引起的故障
  • 影响该事物本身

系统故障

  • 掉电、非正常关机等引起的故障
  • 影响正在运行的事务以及数据库缓冲区

介质故障

  • 介质损坏影响的故障
  • 影响是全面的,既影响内存中的数据,又影响介质中的数据

1.2 故障恢复

1.2.1 数据库故障恢复

把DB的当前不正确的状态恢复成已知的正确的状态
需要保证事务的:

  • 原子性:事务的所有操作为一个整体
  • 持久性:已经提交的事务,落盘 是 肯定的

1.2.2 事务故障恢复

事务可以通过重做事务Redo 和 撤销事务Undo来恢复

1.2.3 系统故障恢复

运行日志SystemLog

  • Log是DBMS维护的一个文件,以流水方式记录了每一事务对DB的每一次操作&操作的顺序
  • 运行日志直接写入介质存储上,会保持正确性
  • 事务对DB操作时,先写日志(1) 成功后 在写入DB(2)
    在这里插入图片描述

系统故障可以通过运行日志来恢复
故障恢复是需要时间的
DBMS在运行日志中定期设置河更新检查点Checkpoint

  • 检查点是这样的时刻:在该时刻,DBMS强制使内存DBbuffer中的内容和介质DB中的内容保持一致,将DBbuffer更新的所有内容写会DB中
  • 检查点表示:在检查点之前,内存中的数据与介质中的数据保持一致

系统故障的恢复

  • 检查点之前的事务不需要恢复(因为已经落盘)
  • 检查点之后的事务需要恢复(结束的重做,未结束的撤销)

在这里插入图片描述

1.2.4 介质故障恢复

副本:在某一时刻,数据库的备份
用备份来替换损坏的数据库
介质故障的恢复:用副本来替换数据库
由于介质故障影响全面,在副本替换后 还需要 日志恢复

备份时刻:转储点
过频,影响性能;过疏,运行日志过大,恢复起来慢
频率和运行日志大小有关

二、运行日志及其检查点

2.1 DB Log

2.1.1 事务的操作

事务读写元素

  • Read(X,t):将元素X读到局部变量t中
  • writex(X,t):将事物局部变量t学回元素X
  • Input(X):将元素X从磁盘读入到内存缓冲区中
  • Output(X):将元素X写回到磁盘中
    每个事务都可以提交或者撤销
  • commit
  • abort

2.1.2 缓冲区处理策略

持久性的特性:

Force:内存中的数据最晚在commit的时候写入磁盘
No Steal:只能在commit的时候提交,不允许事务提前提交
No force:数据在内存中可以一直保留,在commit之后一段时间再写入磁盘,commit之后崩溃还没写,需要redo
Steal:允许commit之前落盘,if commit is failed, 需要undo
在这里插入图片描述

2.2 日志记录

在这里插入图片描述
在这里插入图片描述

三、三种类型的运行日志

3.1 Undo日志

记录原始值
在这里插入图片描述
Undo型日志:“将事务改变的所有数据写到磁盘前不能提交该事务”
记录的原始值
故障时直接恢复原始值
Undo日志:Undo日志记录了事务进行之前数据的原始状态,以及每个事务所做的修改,用于在回滚时恢复数据原始状态。在数据库回滚操作中,首先会根据事务的ID,找到该事务对应的Undo日志,然后根据Undo日志中的信息,恢复数据到事务之前的状态。例如,如果一个事务对某个用户的姓名进行了修改,在回滚时,可以使用Undo日志中记录的原始姓名信息,将数据恢复至修改之前的状态。

3.1.1 检查点

在这里插入图片描述

3.2 Redo日志

记录修改的操作
在这里插入图片描述记录修改操作 +1 +2 之类的
Redo日志:Redo日志记录了每个事务所做的修改操作,用于在系统发生崩溃时进行恢复。在数据库恢复操作中,首先会根据Redo日志中的信息,将缺失的数据重新写入磁盘中,以保证数据的完整性。例如,在一个在线购物网站中,如果在用户提交订单后,系统崩溃了,使用Redo日志可以将该订单重新写入磁盘中,确保订单信息不会丢失。

只能有非静止检查点(增量检查点)

3.3 Undo/Redo日志结合

记录原始值和修改的值
在这里插入图片描述
Undo、Redo日志对比

  • Undo
    • output必须先做
    • if commit T可见,那么T已经落盘,不必重做。
    • 导致频繁写磁盘
  • Redo
    • output必须后做
    • if commit T 不可见,T确定没有任何数据落盘,因此无需撤销。
    • 灵活性差,数据必须在commit之后才能见到

Redo/Undo日志:Redo/Undo日志综合了Undo和Redo日志的功能,在事务进行过程中,同时记录当前状态和操作,用于在系统崩溃时和事务回滚时进行数据恢复。在Redo/Undo日志中,Undo操作和Redo操作都会被记录下来,以保证数据的完整性和一致性。例如,如果在一个医院管理系统中,一个医生修改了某个病人的病历记录,系统同时会记录下原始病历记录和修改后的病历记录,以便在医生需要撤销修改或系统崩溃时恢复数据
在这里插入图片描述

四、利用运行日志进行故障恢复

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

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

相关文章

Binder与 四大组件工作原理 Service、BroadCastReceiver、ContentProvider

Service 工作原理 Service有两套流程,一套是启动流程,另一套是绑定流程。我们做App开发的同学都应该知道 1)在新进程启动Service 我们先看Service启动过程,假设要启动的Service是在一个新的进程中,分为5个阶段&#…

农业信息化有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是一些农业信息化领域的SCI期刊推荐: Computers and Electronics in Agriculture: 该期刊涵盖了计算机和电子技术在农业生产和食品生产中的应用,如精准农业、农业机械自动化、智能传感器、农业模型和模拟等方面的研究。 影响因子为4.5…

离散数学组合计数

基本的组合计数公式 主要内容 加法法则和乘法法则排列与组合二项式定理与组合恒等式多项式定理 加法法则和乘法法则 加法法则乘法法则分类处理与分步处理 问题1:某旅游团从南京到上海,可以乘骑车,也可以乘火车,假定骑车每日有…

PHP源码的加密方法分享

关于PHP PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。 PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 有些时候,我们需要对P…

流程图拖拽视觉编程-流程编辑器

目录 一、简介 二、流程编辑器-视图实现 三、参考资料 一、简介 前期文章: 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 本期内容: 本期将介绍流程编辑器模块的实现方法,效果图如下所示。该模块基于QT Graphics/View实现&…

AVL 树(自平衡二叉搜索树) 介绍

AVL 树(自平衡二叉搜索树) 介绍 前言 在介绍二叉搜索树的章节中提到,二叉搜索树可能退化为线性链表,失去作为二叉树的各种优势。那么过程中需要维持二叉树的形式,同时左右子树的深度差异可控,如果能实现这两个条件&a…

要强的董经贵,与跳不出两轮电动车品质“陷阱”的雅迪

文|智能相对论 作者|陈明涛 “雅迪缺乏一个明确的战略定位,整个企业都没有方向,直接导致雅迪在前期竞争中失去先机。” “行业主要竞争对手更擅长销售和价格战,雅迪一直疲于应付、资源消耗大,结果也不理想。” “团队和经销商…

weblogic 反序列化 (CVE-2020-2551)漏洞复现(vulfocus)

漏洞简介 weblogic 反序列化 (CVE-2020-2551)漏洞是基于IIOP协议执行远程代码进行利用。 启动服务 http://192.168.5.128:10710/console/login/LoginForm.jsp 首先打开此连接,初始化weblogic服务。 准备工具 exp-自己写一个即可. javac…

企业编码生成系统--Python基础项目(4)

1. 成品展示🚗🚀🛫 运行🚀🚀🚀:1.在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。2.在该界面中可以选择要使用功能对应的菜单进行不同的操作。3.在选择功能菜单时&#x…

搭建electron-vue

electron-vue 准备工作修改package.jsonappveyor.yml.travis.yml.gitignore.eslintrc.js.eslintignore.babelrcsrc/renderer/main.jssrc/renderer/App.vuesrc/renderer/store/index.jssrc/renderer/store/modules/Counter.jssrc/renderer/store/modules/Counter.jssrc/renderer…

GT928 TP驱动跟读及虚拟按键上报解析

目前公司TP常用一套代码。MTK 平台使用.ko形式加载,所以跟读一下加深理解。 static struct i2c_driver tpd_i2c_driver {.driver {.of_match_table of_match_ptr(gt9xx_dt_match),},.probe tpd_i2c_probe,.remove tpd_i2c_remove,.detect tpd_i2c_detect,.dr…

万物皆数,算无止境 | 「雪浪算力开发者大赛」圆满收官

时在中春,阳和方起。 4月23日,「雪浪算力开发者大赛」 在雪浪小镇迎来完美收官。 本次大赛吸引了全球超过2422名开发者, 共有624支企业队伍, 288支高校队伍报名参赛, 累计提交作品9895份。 经过三个月激烈的角逐…

Linux shell编程 循环语句for continue break

for循环是编程语言中一种循环语句 示例1:循环读取user.txt中的用户名,创建用户。设置密码。 for i in $(cat /opt/user.txt) douseradd $iecho 123456 | passwd --stdin $i done 示例2:循环读取ipaddr文本文件中地址,执行ping命令…

基于空间矢量脉宽调制(SVPWM)的并网逆变器研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

day38—选择题

文章目录 1.在计算机网络中,TCP和UDP协议的相似之处是(D)2.下列哪项最恰当地描述了建立TCP连接时“第一次握手”所做的工作(C)3.关于以下 URL 的描述错误的是(A)4.不属于交换机攻击的是&#xf…

LangChain入门指南

LangChain入门 什么是LangChain如何使用 LangChain?LangChain的模型LangChain 的主要特点使用示例构建语言模型应用程序:LLMPrompt Templates: 管理LLMs的Prompts构建语言模型应用程序:Chat Model完整代码 什么是LangChain LangChain是一个强…

【C语言】leetcode每日一题

目录 前言题目描述题目分析代码描述 前言 时间过得真快,马上又要回家了,马上又要开始卷了。不是每朵鲜花都能代表爱情,但是玫瑰做到了;不是每棵树都能耐得住干渴,但是白杨做到了;不是每个人都在追求上进&a…

【算法思维】-- 动态规划(C++)

OJ须知: 一般而言,OJ在1s内能接受的算法时间复杂度:10e8 ~ 10e9之间(中值5*10e8)。在竞赛中,一般认为计算机1秒能执行 5*10e8 次计算。 时间复杂度取值范围o(log2n)大的离谱O(n)10e8O(nlog(n))10e6O(nsqrt(…

从CI/CD持续集成部署到DevOps研发运维一体化

今天整理下从传统的CI/CD到DevOps研发运维一体化的整个演进过程。类似于每日构建和冒烟测试,实际上在10多年前就已经在实践,比如当前用的笔记多的AntCruiseControl方式来实现自动化的编译构建和持续集成能力。 包括当前DevOps过程实践中的持续集成&…

基于Springboot的班级综合测评管理系统的设计与实现

摘要 随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要…