代码编织梦想

一、数据库故障恢复思路

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操作都会被记录下来,以保证数据的完整性和一致性。例如,如果在一个医院管理系统中,一个医生修改了某个病人的病历记录,系统同时会记录下原始病历记录和修改后的病历记录,以便在医生需要撤销修改或系统崩溃时恢复数据
在这里插入图片描述

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39381833/article/details/130400269

数据库系统---故障与恢复_hu19930613的博客-爱代码爱编程

故障与恢复     数据库的故障可用事务的故障来表示,主要分为四类:     (1)事务故障。事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发生死锁等,使事务未运行至正常终止点就被撤销,这种情况称为“事务故障”。     (2)系统故障。系统故障是指系统在运行过程中,由于某种原因(如操

数据库系统---备份与恢复_hu19930613的博客-爱代码爱编程

备份与恢复     数据库中的数据一般都十分重要,不能丢失,因为各种原因,数据库都有损坏的可能性(虽然很小),所以事先制定一个合适的、可操作的备份和恢复计划至关重要。备份和恢复计划的制订要遵循以下两个原则:     (1)保证数据丢失的情况尽量少或完全不丢失,因为性价比的要求,这要取决于现实系统的具体要求。     (2)备份和恢复时间尽量短,保证系

数据库系统---分布式数据库系统_hu19930613的博客-爱代码爱编程_分布式数据库系统

分布式数据库系统     近年来,随着计算机技术与网络技术的发展,特别是 Internet 的兴起,分布式数据库系统得到了很快的发展和应用。 1 分布式数据库的概念      分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。分布式数据库(Distributed DataBase,DDB)比较确切的定义是:分布式数

数据库---数据库恢复技术-爱代码爱编程

文章目录 事务的基本概念数据库恢复概述故障的种类恢复的实现技术数据转储登记日志文件恢复策略事务故障的恢复系统故障的恢复介质故障的恢复具有检查点的恢复技术数据库镜像 事务的基本概念 事务:一个数据库操作序列,一个不可分割的工作单位。 在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序。一个程序通常包含多个事务。 事务

数据库三种故障恢复处理-爱代码爱编程

三种故障类型如下: 故障类型事务故障系统故障介质故障1. 事务故障恢复。 由系统自动完成,对用户是透明的。 DBMS执行恢复操作的步骤如下: 反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。 对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。 继续反向扫描日志文件,做同样处理。 如此处理下去,直至读到此事务的开始

【学习笔记之数据库系统工程师】数据库系统故障与恢复-爱代码爱编程

故障 事务故障:事务故障是单独一个事务出问题而不能执行下去,并不影响其他事务的执行;由系统自动完成,对用户是透明的。系统故障:系统故障是故障导致系统重启,当前运行中的事务及刚刚提交的事务会导致数据库不一致;介质故障:介质故障则是数据库文件的存储介质如硬盘发生故障导致数据丢失。是指外存故障,例如磁盘损坏、磁头碰撞,瞬时强磁场干扰等 故障恢复方法 DBM

数据库-故障的种类-爱代码爱编程

数据库系统中可能发生各种各样的故障,大侄可以分为一下几类。 事务内部的故障 事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理。 如运算溢出,并发事务发生死锁而被选中撤销该事务,违反了某些完整性限制而被终止等。 事务故障意味着事务没有达到预期的终点,因此数据库可能处于不正确的状态,恢复程序要在不影响其他事务运行的情况下

数据库原理-故障和恢复(1)-爱代码爱编程

目录 故障 数据库故障的类型 一、事务故障 二、系统故障 三、介质故障 数据库故障小结 故障 1. 数据库故障 故障是不可避免的 -计算机硬件故障 -系统软件和应用软件的错误 -操作员的失误 -恶意的破坏 故障的影响 -轻则造成运行事务非正常中断,影响数据库中数据的正确性 -重则破坏数据库,使数据库中数据部分或全部丢失 数据库的可恢复

数据库原理-故障和恢复(2)-爱代码爱编程

目录 恢复的实现技术 恢复技术的原理 1.数据转储 2.登记日志文件 3.恢复策略 恢复的实现技术 恢复技术的原理 -利用存储在系统其它地方的冗余数据来修复或重建数据库 中被破坏的或不正确的数据。 恢复的实现技术:复杂 大型数据库产品,恢复子系统的代码要占全部代码的10%以上 恢复机制涉及的关键问题 - (1)如何建立冗余数据 ·数据转

数据库的故障和恢复-爱代码爱编程

1. 数据库的故障和恢复方法 错误的数据输入:应用程序的检测机制进行检测。系统错误:断电或软件错误。通过数据库的恢复机制进行恢复。介质故障:磁盘故障,可用数据存储的奇偶校验进行校正,或采用 RAID 技术。灾难性故障:火灾。及时备份(远程备份)。2. 事务和日志的概念 事务:一系列的操作集合。特性(ACID): 原子性(Atomicity):要么全

数据库故障恢复-爱代码爱编程

数据库故障恢复 事务故障的恢复系统故障恢复介质故障恢复 事务故障的恢复 1、事务故障的恢复 事务故障是事务在运行至正常终止前被终止,这时恢复子系统应该用日志文件撤销(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统具体恢复步骤是: (1) 反向扫描日志文件,即从最后向前扫描日志文件,查找该事务的更新

数据库系统概论-数据库恢复技术-爱代码爱编程

1、事务的概念及其特性,恢复技术能保证事务的哪些特性? 事务是用户定义的一个数据库操作序列,这些操作要么全做、要么全不做,是一个不可分割的工作单位。 事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)。这4个特性也简称ACID特性。 原子性:事务是数据库的逻辑

数据库系统 --- 数据库技术介绍-爱代码爱编程

数据库技术介绍 一.数据与信息二.数据库及其特性1.数据库(Database)的由来2.数据库概念三.数据库系统的组成及其结构特性1.两类数据模型2.数据库的特点四.数据库技术1.对数据库的访问---数据操作2.数据库管理系统(DBMS)3.数据库应用程序4.数据库系统的架构5.数据库技术要解决的五个工程问题五.数据库领域的从业人员1.DBMS设计

数据库的故障与恢复_数据库系统故障的恢复步骤_mischen520的博客-爱代码爱编程

数据库的故障可用事务的故障来表示,主要分为四类: (1)事务故障。事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发生死锁等,使事务未运行至正常终止点就被撤销,

数据库复习-爱代码爱编程

一  事务的概念 事务是数据库操作序列,这些操作要么全做,要么全不做,是不可分割的工作单位。一个事务可以是一个sql语句,一组sql语句,或者整个程序。一般来说,一个程序包含多个事务。事务是恢复的基本单位,也是并发控制的基本单位。   二  定义事务的SQL语句 开始语句:BEGIN TRANSACTION; 结束语句:COMMIT;  //表示提