mysql undo+redo+binlog
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的更多相关文章
- MySql Undo Redo
Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomicity) ...
- Mysql undo redo 总结
- MySQL中redo log、undo log、binlog关系以及区别
MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...
- 数据库篇:mysql日志类型之 redo、undo、binlog
前言 可以说mysql的多数特性都是围绕日志文件实现,而其中最重要的有以下三种 redo 日志 undo 日志 binlog 日志 关注公众号,一起交流:微信搜一搜: 潜行前行 1 redo日志 in ...
- 2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?
作者:小林coding 计算机八股文网站:https://xiaolincoding.com/ 大家好,我是小林. 从这篇「执行一条 SQL 查询语句,期间发生了什么?」中,我们知道了一条查询语句经历 ...
- redo、undo、binlog的区别
在MySQL中,redo.undo.binlog经常见,但很容易混淆这三者. redo undo binlog 作用 保持事务的持久性 帮助事务回滚及MVCC的功能 进行Point-In-Time ...
- MySQL 中Redo与Binlog顺序一致性问题
首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的.而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的.现在我们来讨论一下My ...
- MySQL,MariaDB:Undo | Redo [转]
本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...
- [转]MySQL日志——Undo | Redo
本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...
随机推荐
- lora技术在电力行业的应用
智能电网的目标是建立一个高速通信网络之上的传统电网.它通过传感,分析,预测,决策和控制提供稳定,高效的电力供应.传统电网分为三个主要区域S-发电,输电和配电.先进的计量系统是使这种传统电网智能化的基础 ...
- python造一个计算器
正则表达式之简易计算器 关注公众号"轻松学编程"了解更多. 需求:使用正则表达式完成一个简易计算器. 功能:能够计算简单的表达式. 如:12((1+2)/(2+3)+1)*5.1- ...
- java 动态增加应用服务器,出现的消息队列的消费者提报错问题
java 动态增加应用服务器,出现的消息队列的消费者提报错问题 在项目中,有这样的业务场景,在某一个时间段,客户流量瞬间增大,服务器瞬间很大,出现高并发问题.有一种解决方案就是脚本动态增加业务服务器, ...
- Group指定的方式如下: @Test(groups = {"fast", "unit", "database" })
Group指定的方式如下: @Test(groups = {"fast", "unit", "database" }) public voi ...
- 15 CGI和WSGI
15 CGI和WSGI CGI是通用网关接口,是连接web服务器和应用程序的接口,用户通过CGI来获取动态数据或文件等. CGI程序是一个独立的程序,它可以用几乎所有语言来写,包括perl,c,lua ...
- 年轻人的第一个 Docker 应用,大大提高生产力!
上一篇:年轻人的第一个 Spring Boot 应用! 哈哈,标题我抄了雷总的,不重要哦,重要的是 Docker 真的很年轻,虽然现在才不到 8 岁,但却是个冉冉升起的巨星,火得一塌糊涂. 这几年 D ...
- 【开发板试用报告】学习GPIO编程
温湿度传感器 参考许老师教程:https://gitee.com/hihopeorg/ 下载源码git clone https://github.com/xusiwei/harmonyos-aht20 ...
- boston.csv 完整版 508个数据集
https://pan.baidu.com/s/1C1Llx8cTu5xBdK9GuDZ11A 提取码:u6cm
- VMware虚拟机 - 如何让鼠标从虚拟机中返回到个人计算机中
最简单的方式 按快捷键:ctrl+alt即可 彻底解决问题的方法:安装VMware Tools 前提条件 开启虚拟机 确认客户机操作系统正在运行 因为 VMware Tools 安装程序是使用 Per ...
- BPMN开源工作流编辑器bpmn-js落地实践中文文档
BPMN是一套标准的业务流程建模符号规范,bpmn-js是基于此规范实现的一套渲染工具包和web建模器,可以实现拖拽生成工作流程图,效果大概如下 最近刚好用到,研究之后写了系列文章,分享给有需要的小伙 ...