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来实现多版 ...
随机推荐
- GPRS DTU工作的原理与应用场景
GPRS DTU是属于物联网无线数据终端设备的中一种,它主要是利用公用运营商的GPRS网络(又称G网)来为用户提供无线长距离数据传输的功能.一般都是采用的高性能工业级8/16/32位通信处理器和工业级 ...
- Redis常用命令(1)——Key
DEL 格式:DEL key [key ...] 作用:删除一个或多个 key.不存在的 key 会被忽略. 返回值:被删除 key 的数量. 示例: 192.168.1.100:6379> s ...
- AQS源码深入分析之独占模式-ReentrantLock锁特性详解
本文基于JDK-8u261源码分析 相信大部分人知道AQS是因为ReentrantLock,ReentrantLock的底层是使用AQS来实现的.还有一部分人知道共享锁(Semaphore/Count ...
- 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)
2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...
- python开发基础(二)运算符以及数据类型之dict(字典)
# encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...
- 手写Koa.js源码
用Node.js写一个web服务器,我前面已经写过两篇文章了: 第一篇是不使用任何框架也能搭建一个web服务器,主要是熟悉Node.js原生API的使用:使用Node.js原生API写一个web服务器 ...
- 要求用户输入用户名和密码,只要不是admin、888888就
要求用户输入用户名和密码,只要不是admin.888888就一直提示用户名或密码错误,请重新输入 Console.WriteLine("输入账号和密码"); string a = ...
- 基于gin的golang web开发:使用数据库事务
在前文介绍访问数据库时介绍了github.com/jmoiron/sqlx包,本文基于这个包使用数据库事务. defer 在使用数据库事务之前,首先需要了解go语言的defer关键字.defer是go ...
- # Maven:Could not transfer artifact org.springframework:spring-webmvc:pom:。。。(系统找不到文件),从网上clone到本地的项目报红
解决办法: 确保maven配置正确,在maven的setting.xml配置文件中, 配置本地仓库路径 <localRepository>D:\Maven\文件名</localRep ...
- ubuntu下创建http服务器
使用ubuntu搭建一个简单的http服务器安装apache21.sudo apt-get update2.sudo apt-get install apache2 安装成功后,再/etc/apach ...