rt

数据库事务开始之前,会将要修改的记录存放到UNdo日志里,当事务回滚时或数据库崩溃时,可以利用undo日志撤销未提交事务对数据库产生的影响。

逻辑日志,记录一个过程,提交后不会删除。delete insert

采用段的方式管理和记录。在innnodb数据文件中包含一种rollback segment回滚段,

内部包含1024个undo log segment。

show variables like "%innodb_undo%";

作用:

  • 实现事务原子性

  事务处理过程中,如果出现了错误或者用户执行了rollback语句,mysql可以利用undoLog 中的备份将数据恢复到事务开始前的状态。

  • 实现多版本并发控制MVCC

   事务未提交之前,undolog 保存了未提交之前的版本数据,undo log中的数据可作为数据旧版本快照供其他并发食物进行快照读。

事务A手动开启事务,执行更新操作,首先会把更新命中的数据备份到undo Buffer中。事务B手动开启事务,执行查询操作,会读取undi日志数据返回,进行快照读

redo log

事务中修改的任何数据,将最新的数据备份存储的位置,被称为重做日志

随着事务操作的执行,就会生成redo log,在事务提交时会将产生redo log写入log buffer,并不是随着事务的提交就立刻写入磁盘文件。等事务操作的脏页写入到磁盘之后,redolog的使命也就完成了,Redo log 占用的空间就可以重用(被覆盖写入)。

作用:为了实现事务的持久性。防止在发生故障的时间点,尚有脏页为写入表的IBD文件中,在重启MYSQL服务的时候,根据RedoLog进行重做,从而达到事务的未入磁盘数据进行持久化这一特性。

redoLog 是顺序写 同步?

其实不然,参考https://blog.csdn.net/m0_37264516/article/details/99480237

用的还是非同步的io。只保证刷到页告诉缓存,优势在于,顺序写,写之前的查 缓存命中率高

顺序循环写的方式写入文件,写满时则回溯到第一个文件,进行覆盖写。

Binlog

不是innodb独有,是mysql server自己的日志。

主从复制:在主库中开启,主库就可以把binlog传递给从库,从库拿到binlog后实现数据恢复达到主从数据一致性。

数据恢复:通过mysqlbinlog工具来恢复数据。

文件结构:

binlog和redlog区别

redolog 是属于innodb,binlog是属于mysql server自带功能。

redo log属于物理日志,记录该数据页更新状态内容,binlog是逻辑日志,记录更新过程

redo log日志是循环写,日志空间大小是固定。binlog是追加写入, 写完一个写下一个,不回覆盖使用。

redo log作为服务期异常宕机后事务数据自动恢复使用。binlog可以作为主从复制和数据恢复使用。binlog没有自动crash-safe功能

mysql undo+redo+binlog的更多相关文章

  1. MySql Undo Redo

    Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomicity) ...

  2. Mysql undo redo 总结

  3. MySQL中redo log、undo log、binlog关系以及区别

    MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...

  4. 数据库篇:mysql日志类型之 redo、undo、binlog

    前言 可以说mysql的多数特性都是围绕日志文件实现,而其中最重要的有以下三种 redo 日志 undo 日志 binlog 日志 关注公众号,一起交流:微信搜一搜: 潜行前行 1 redo日志 in ...

  5. 2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com/ 大家好,我是小林. 从这篇「执行一条 SQL 查询语句,期间发生了什么?」中,我们知道了一条查询语句经历 ...

  6. redo、undo、binlog的区别

    在MySQL中,redo.undo.binlog经常见,但很容易混淆这三者.   redo undo binlog 作用 保持事务的持久性 帮助事务回滚及MVCC的功能 进行Point-In-Time ...

  7. MySQL 中Redo与Binlog顺序一致性问题

    首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的.而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的.现在我们来讨论一下My ...

  8. MySQL,MariaDB:Undo | Redo [转]

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...

  9. [转]MySQL日志——Undo | Redo

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...

随机推荐

  1. lora技术在电力行业的应用

    智能电网的目标是建立一个高速通信网络之上的传统电网.它通过传感,分析,预测,决策和控制提供稳定,高效的电力供应.传统电网分为三个主要区域S-发电,输电和配电.先进的计量系统是使这种传统电网智能化的基础 ...

  2. python造一个计算器

    正则表达式之简易计算器 关注公众号"轻松学编程"了解更多. 需求:使用正则表达式完成一个简易计算器. 功能:能够计算简单的表达式. 如:12((1+2)/(2+3)+1)*5.1- ...

  3. java 动态增加应用服务器,出现的消息队列的消费者提报错问题

    java 动态增加应用服务器,出现的消息队列的消费者提报错问题 在项目中,有这样的业务场景,在某一个时间段,客户流量瞬间增大,服务器瞬间很大,出现高并发问题.有一种解决方案就是脚本动态增加业务服务器, ...

  4. Group指定的方式如下: @Test(groups = {"fast", "unit", "database" })

    Group指定的方式如下: @Test(groups = {"fast", "unit", "database" }) public voi ...

  5. 15 CGI和WSGI

    15 CGI和WSGI CGI是通用网关接口,是连接web服务器和应用程序的接口,用户通过CGI来获取动态数据或文件等. CGI程序是一个独立的程序,它可以用几乎所有语言来写,包括perl,c,lua ...

  6. 年轻人的第一个 Docker 应用,大大提高生产力!

    上一篇:年轻人的第一个 Spring Boot 应用! 哈哈,标题我抄了雷总的,不重要哦,重要的是 Docker 真的很年轻,虽然现在才不到 8 岁,但却是个冉冉升起的巨星,火得一塌糊涂. 这几年 D ...

  7. 【开发板试用报告】学习GPIO编程

    温湿度传感器 参考许老师教程:https://gitee.com/hihopeorg/ 下载源码git clone https://github.com/xusiwei/harmonyos-aht20 ...

  8. boston.csv 完整版 508个数据集

    https://pan.baidu.com/s/1C1Llx8cTu5xBdK9GuDZ11A 提取码:u6cm

  9. VMware虚拟机 - 如何让鼠标从虚拟机中返回到个人计算机中

    最简单的方式 按快捷键:ctrl+alt即可 彻底解决问题的方法:安装VMware Tools 前提条件 开启虚拟机 确认客户机操作系统正在运行 因为 VMware Tools 安装程序是使用 Per ...

  10. BPMN开源工作流编辑器bpmn-js落地实践中文文档

    BPMN是一套标准的业务流程建模符号规范,bpmn-js是基于此规范实现的一套渲染工具包和web建模器,可以实现拖拽生成工作流程图,效果大概如下 最近刚好用到,研究之后写了系列文章,分享给有需要的小伙 ...