MySQL-binlog、redolog和undolog的区别

区别:

1、binlog是mysql server层面的,用与数据备份和主从复制,每个执行引擎都有这个文件,比如Myisam和InnoDb

2、redoLog是InnoDb引擎特有的(实现了持久性),用于数据update,先将数据更新在内存,然后写入redolog,在空闲的时候写入磁盘

3、undlog也是InnoDb引擎特有的(实现了原子性),保存着更新前的语句,用于sql语句的回滚,MVCC用到了undolog,当读取的行被其他事务锁定时,可以从undolog找出该行记录之前的数据是什么,从而提供版本信息,保证用户的非一致性读取。

undolog---一条记录的每一次更新操作产生的 undo log 格式都有一个 roll_pointer 指针和一个 trx_id 事务id:

两阶段提交:在事务提交前redolog会有一个prepare阶段,这个阶段中先记录好redolog,然后在redolog提交commit之前,会记录binlog,记录好了之后会执行commit操作。

数据库崩溃能否使用undolog来恢复?

不能,因为undolog是循环写,写入磁盘后会将数据擦除。需要使用binlog来进行恢复,binlog是追加写。

相关推荐
松涛和鸣25 分钟前
59、 IMX6ULL按键驱动开发:轮询到中断的实现
linux·服务器·c语言·arm开发·数据库·驱动开发
XT462530 分钟前
创建唯一索引但存在NULL
数据库
扑火的小飞蛾37 分钟前
【Oracle Database 分区表】之新特性_18c(三)
数据库·oracle
九章-41 分钟前
集中式数据库 vs 分布式数据库:2026 最新对比,选哪个更合适?
数据库·分布式·集中式
softshow10261 小时前
Redis 分布式锁必避问题及解决方案
数据库·redis·分布式
韩立学长1 小时前
【开题答辩实录分享】以《足球球员数据分析系统开题报告》为例进行选题答辩实录分享
java·数据库·mysql
Gauss松鼠会1 小时前
【openGauss】openGauss 如何进行数据库例行维护
数据库·sql·database·opengauss
小-黯1 小时前
QT编译MySQL驱动教程(Windows/Linux)
windows·qt·mysql
萧咕1 小时前
理解MySQL数据可视化的核心概念
数据库·mysql·信息可视化
wWYy.1 小时前
详解redis(5):Gossiping 协议
数据库·redis·缓存