果酱带你啃java
避坑必看!MySQL 三大日志(redo/undo/binlog)底层原理全拆解,事务一致性再也不懵
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
果酱带你啃java
社区首页
>
专栏
>
避坑必看!MySQL 三大日志(redo/undo/binlog)底层原理全拆解,事务一致性再也不懵
避坑必看!MySQL 三大日志(redo/undo/binlog)底层原理全拆解,事务一致性再也不懵
果酱带你啃java
关注
发布于 2026-04-07 17:56:03
发布于 2026-04-07 17:56:03
762
0
举报
概述
MySQL事务ACID的基石是redo、undo、binlog三大日志:redo log保障持久性(宕机不丢数据),undo log保障原子性(支持回滚与MVCC),binlog保障可追溯与主从同步。三者协同工作,缺一不可。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
mysql
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
mysql
#mysql
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
目录
一、先搞懂核心:三大日志各自的“分工”
二、详解redo log:事务持久性的“守护者”
2.1 核心作用
2.2 核心特性:循环写+固定大小
2.3 写入机制(分步骤拆解)
步骤1:事务执行时,写入redo log buffer(内存)
步骤2:事务提交时,触发redo log刷盘(默认策略)
步骤3:后台线程异步刷盘(补充)
写入机制流程图
2.4 刷盘策略(4种,重点记默认)
关键提醒
2.5 实例:验证redo log的作用(MySQL 8.0)
步骤1:准备环境(创建表+插入初始数据)
步骤2:修改数据,不提交事务(观察redo log buffer)
步骤3:故意宕机(模拟MySQL异常崩溃)
步骤4:重启MySQL,观察数据
步骤5:重复步骤2-4,提交事务后宕机
2.6 常见误区(避坑重点)
三、详解undo log:事务原子性的“后悔药”
3.1 核心作用
3.2 核心特性:逻辑日志+可回滚
3.3 写入机制(分步骤拆解)
步骤1:事务开始时,创建undo段
步骤2:执行修改操作时,同步写入undo log
步骤3:事务回滚时,利用undo log 恢复数据
步骤4:事务提交时,标记undo log 可回收
写入机制流程图
3.4 刷盘策略
3.5 实例1:事务回滚(验证undo log的原子性保障)
执行结果解析
3.6 实例2:MVCC依赖undo log(验证历史版本读取)
事务1(修改数据,不提交)
事务2(读取数据,查看历史版本)
事务1提交后,事务3读取
原理解析
3.7 常见误区(避坑重点)
四、详解binlog:数据可追溯、主从同步的“核心”
4.1 核心作用
4.2 核心特性:追加写+不循环
4.3 三种格式(重点记Row格式)
1. Statement 格式(语句级)
2. Row 格式(行级)
3. Mixed 格式(混合级)
格式对比表
4.4 写入机制(分步骤拆解)
步骤1:事务执行时,记录SQL操作到binlog cache(内存)
步骤2:事务提交时,将binlog cache刷盘到binlog文件
步骤3:binlog 文件滚动
写入机制流程图
4.5 刷盘策略(由sync_binlog控制,重点记1)
关键提醒
4.6 实例1:查看binlog文件,解析数据变更
步骤1:开启binlog(默认开启,MySQL 8.0)
步骤2:执行数据修改,查看binlog内容
步骤3:解析binlog内容(Row格式)
解析结果关键内容(简化)
4.7 实例2:通过binlog恢复误删数据
步骤1:找到误删操作对应的binlog位置
步骤2:记录误删操作的起始和结束位置
步骤3:执行binlog回放,恢复数据
步骤4:验证恢复结果
4.8 常见误区(避坑重点)
五、三大日志协同工作:如何保证事务持久性与数据一致性?
5.1 核心协同逻辑(事务提交全流程)
流程图
步骤详解(关键重点)
5.2 宕机恢复时的协同逻辑
5.3 主从同步时的协同逻辑
架构图
协同细节(重点)
5.4 实例:Java + MyBatis-Plus 实战,验证三大日志协同(JDK 17)
第一步:pom.xml 依赖
第二步:application.yml 配置(双1配置,开启binlog)
第三步:实体类(UserInfo)
第四步:Mapper 接口(UserInfoMapper)
第五步:Service 接口及实现(编程式事务)
第六步:Controller 层(Swagger3 注解)
第七步:启动类
实例验证步骤
协同逻辑解析
5.5 易混淆点区分
六、生产环境最佳实践
6.1 生产环境核心参数配置(MySQL 8.0 官方推荐)
6.2 三大日志的监控与运维规范
6.2.1 核心监控指标
6.2.2 强制运维规范
6.3 数据恢复标准化流程
6.3.1 场景1:MySQL宕机重启后的自动恢复流程
6.3.2 场景2:误操作数据的标准化恢复流程(基于binlog)
6.4 性能优化核心技巧
6.5 高频生产事故避坑指南
6.6 总结
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐