天有不测风云,数据库有旦夕祸福。前面写 Redo 日志的文章介绍过,数据库正常运行时,Redo 日志就是个累赘。现在,终于到了 Redo 日志扬眉吐气,大显身手的时候了。本文我们一起来看看,MySQL崩溃恢复过程中都干了哪些事情,Redo 日志又是怎么大显身手的。本文介绍的崩溃恢复过程,包含 server 层和 InnoDB,不涉及其它存储引擎,内容基于 MySQ
转载 2023-08-11 18:42:09
1237阅读
1点赞
恢复机制数据库系统必不可少的组成部分,它负责将数据库恢复到故障发生前的一致的状态高可用性:必须将数据库崩溃后不能使用的时间缩减到最短   故障分类:  * 事务故障:    1 逻辑错误,    2 系统错误,如死锁  * 系统崩溃  * 磁盘故障  恢复算法:    1 在正常事务处理时采取措施,保证有足够的信息可用于故障恢复    2 故障发生后采取措施,将数据
数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证。下面简单介绍一下InnoDB的崩溃恢复流程。相关概念   lsn: 可以理解为数据库从创建以来产生的redo日志量,这个值越大,说明数据库的更新越多,也可以理解为更新的
数据库系统在正常停止时,会将内存中的所有日志信息、被更新过的数据写入磁盘,然后在日志文件的最后写入检查点记录 1. 崩溃恢复的处理方式  崩溃恢复就是数据库系统在异常中止后重新启动,使用数据库日志文件,恢复数据库到一致状态的过程。其关键点就是:决定那些事务需要重做,那些事务需要回滚。通过重做已提交事务,避免事务的丢失;通过回滚未完成事务,删除造成数据不一致的部分事务更新 。所
崩溃恢复是指单个实例的数据库在发生实例故障后进行恢复的过程。崩溃恢复的主要目标是恢复由于实例崩溃而丢失的位于缓存中的数据。在进行崩溃恢复时,Oracle利用联机重做日志中的信息来恢复已经提交的事务对数据库所做的修改,而不需要使用归档重做日志文件。崩溃恢复是由Oracle在打开数据库时自动完成的,不需要DBA进行任何干预。介质恢复根据恢复的对象可以分为数据文件介质恢复数据块介质恢复数据块的介质恢
MySQL为了提高性能,你对它数据行的增、删、改操作其实都优先发生在内存(Buffer Pool)中。那你想,假如你update了某些数据,Buffer Pool中的数据页也就会被你改成脏数据页。那万一你刚修改完并提交了事物,还没来得及将数据落盘MYSQL就宕机了怎么办? 当MySQL重启的时候需要把方才修改的内容恢复出来吧,不然数据就不一致了。那怎么恢复呢?就借助redo log恢复。因为前面说
转载 2023-08-18 13:58:11
99阅读
概述数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证。下面简单介绍一下InnoDB的崩溃恢复流程。相关概念 lsn: 可以理解为数据库从创建以来产生的redo日志量,这个值越大,说明数据库的更新越多,也可以理解为更新的时刻。此外,每个数据页上也有
在实际的生产环境中,Redis 通常被用作缓存、消息队列、实时计数器等应用场景。在这些场景下,数据的正确性和可靠性是至关重要的。为了保证 Redis 的数据不会因为各种原因而丢失,Redis 提供了持久化功能。Redis 提供了两种持久化方式:RDB 模式:该模式定期或根据操作次数触发对 Redis 内存中的数据进行备份,并生成一个快照文件。当需要从磁盘中恢复 Redis 数据时,只需要读取该文件
转载 2023-08-15 12:42:56
170阅读
作者:宋利兵0、导读本文介绍了InnoDB引擎如何利用Undo Log和Redo Log来保证事务的原子性、持久性原理,以及InnoDB引擎实现Undo Log和Redo Log的基本思路。00 – Undo Log Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,采用Undo Log来实现多版本并发控制(简称 MVCC)。- 事务的原子性(Atomicity)
本文将结合MySQL 8.0.19 分析InnoDB崩溃恢复的拉起过程,包括恢复前的准备工作,redo回放,undo回滚,以及崩溃恢复后Crash Safe DDL的实现。其中重点介绍redo的回放。整体的代码流程如下,InnoDB崩溃恢复的流程是从srv_start, innobase_dict_recover ,ha_post_recover这三个函数中展开,后文会详细介绍。|-->my
前言数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证。本文仔细剖析了InnoDB的崩溃恢复流程,代码基于5.6分支。基础知识***lsn: *** 可以理解为数据库从创建以来产生的redo日志量,这个值越大,说明数据库的更新越多,也可以理解为更新的时刻。此外
转载 2024-02-20 11:33:21
42阅读
MySQL5.7之前的版本中, InnoDB每次做crash recovery之前都需要扫描数据目录,打开每个文件并创建内存对象。当目录下文件个数特别多时,会严重影响到崩溃恢复的速度。为了解决这个问题,MySQL5.7通过结合checkpoint + 标注被修改的文件的方式,从一个checkpoint点开始,可以找到所有崩溃恢复需要打开的文件,从而避免扫描数据目录。本文简单的记录了相关的代码,以
在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool。这里再简单提一嘴,Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子。黑盒下的更新数据流程当我们查询数据的时候,会先去Buffer Pool中查询。如果Buffer Pool中不存在,存储引擎会先将数据从磁盘加载到Buffer Pool中,然后将数据返回给客户端;同理,
转载 2024-05-18 17:17:16
78阅读
Redis宕机,如何避免数据丢失和快速恢复? 你会把Redis应用到什么业务场景上?你大概率会说:“会把它当缓存使用,直接从内存读取数据,响应速度快”。没错,这是Redis最普遍使用的业务场景,但是不可忽视一个问题:一旦服务器宕机,内存中的数据将全部丢失。 首先可能大家很容易想到的一个解决方案是:从后端数据库恢复这些数据。这个方案会带来2个问题:一是,需要频繁访问数据库,会给数据库带来巨大的压力;
转载 2023-08-15 17:01:30
114阅读
数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证。本文仔细剖析了InnoDB的崩溃恢复流程,代码基于5.6分支。基础知识lsn: 可以理解为数据库从创建以来产生的redo日志量,这个值越大,说明数据库的更新越多,也可以理解为更新的时刻。此外
转载 2024-06-04 08:00:03
24阅读
1 binlog、redo log配合崩溃恢复 反证法,若无两阶段提交(2PC),会导致MySQL主备数据不一致。 2PC的不同瞬间,MySQL若异常重启了,又该如何保证数据完整性?1.1 2PC上图即update语句执行流程,其中的commit语句:【commit语句】,指MySQL语法中,提交一个事务的命令。一般跟begin/start transaction配对而图中的【commit步骤】
原创 精选 2023-08-03 22:31:27
2870阅读
redis持久化的意义,在于故障恢复比如你部署了一个redis,作为cache缓存,当然也可以保存一些较为重要的数据如果没有持久化的话,redis遇到灾难性故障的时候,就会丢失所有的数据如果通过持久化将数据搞一份儿在磁盘上去,然后定期比如说同步和备份到一些云存储服务上去,那么就可以保证数据不丢失全部,还是可以恢复一部分数据回来的1、RDB和AOF两种持久化机制的介绍rdb和aof比较rdbaoff
转载 2024-06-19 05:39:10
34阅读
思考一个问题为什么在你当update时,事物提交之前先不断的写redo log呢?如果你看过白日梦前面介绍buffer pool的文章,这个问题的答案想必你也能很快的想出来:MySQL为了提高性能,你对它数据行的增、删、改操作其实都优先发生在内存(Buffer Pool)中。那你想,假如你update了某些数据,Buffer Pool中的数据页也就会被你改成脏数据页。那万一你刚修改完并提交了事物,
对于需要持久化数据的借助日志系统才能展开。日志记录了系统中发生的各个事务。基本的思路就是,把事务提交至数据库的同时,也在日志文件中记录一下。那么应该先提交事务,还
原创 2022-11-11 12:03:46
166阅读
背景在数据库系统发展的历史长河中,故障恢复问题始终伴随左右,也深刻影响着数据库结构的发展变化。通过故障恢复机制,可以实现数据库的两个至关重要的特性:Durability of Updates以及Failure Atomic,也就是我们常说的的ACID中的A和D。磁盘数据库由于其卓越的性价比一直以来都占据数据库应用的主流位置。然而,由于需要协调内存和磁盘两种截然不同的存储介质,在处理故障恢复问题时也
原创 2021-03-04 23:43:12
375阅读
  • 1
  • 2
  • 3
  • 4
  • 5