MySQL中Binlog的完整格式解析(ROW 模式,默认)
更新时间:2026年03月31日 09:22:18 作者:qq_28372005
本文介绍了MySQL 5.7中ROW格式的binlog的特性、解析方法和实战案例,包括MySQL 5.7的binlog核心特性、ROW格式binlog结构、解析命令、常见问题及解决方法等内容,需要的朋友可以参考下
MySQL 5.7 默认 binlog 格式是 ROW(行模式),这是生产环境最常用、最稳定的格式。我给你一份可直接落地使用的解析指南,包含格式结构、解析命令、字段含义、实战案例。
一、MySQL 5.7 Binlog 核心特性
- 默认格式:
ROW(行模式) - 记录内容:不存 SQL,只存行数据变更的前后镜像
- 主从复制:绝对一致,无函数 / 存储过程偏差
- 支持:数据恢复、闪回、CDC 同步(Canal/Debezium)
- binlog 文件:二进制文件,必须用
mysqlbinlog解析
二、3 种格式在 5.7 中的表现
表格
| 格式 | 说明 | 5.7 是否推荐 |
|---|---|---|
| ROW(默认) | 记录行变更 | ✅ 强烈推荐 |
| STATEMENT | 记录原始 SQL | ❌ 不推荐(主从不一致) |
| MIXED | 自动切换 | ⚠️ 一般不使用 |
查看当前格式:
show variables like 'binlog_format';
三、ROW 模式 Binlog 结构(最重要)
一个完整的 binlog 事件包含:
- 事件头:时间、位置、语句类型
- 表映射:库名、表名、字段结构
- 行数据
- 前镜像(before):变更前的数据(UPDATE/DELETE)
- 后镜像(after):变更后的数据(INSERT/UPDATE)
四、mysqlbinlog 解析命令(5.7 专用)
1. 基础解析(能看懂行数据)
mysqlbinlog -v --base64-output=DECODE-ROWS mysql-bin.000001
2. 详细解析(最常用)
mysqlbinlog -vv --base64-output=DECODE-ROWS mysql-bin.000001
-v:简单解析行-vv:显示字段名 + 类型 + 值(生产必备)
3. 按时间 / 位置解析
# 按位置 mysqlbinlog --start-position=107 --stop-position=1000 -vv mysql-bin.000001 # 按时间 mysqlbinlog --start-datetime="2026-03-28 10:00:00" --stop-datetime="2026-03-28 11:00:00" mysql-bin.000001
五、ROW 格式解析实战(一看就懂)
示例 SQL
update user set age=26 where id=1;
解析后关键内容(精简版
字段含义
@1:第 1 列@2:第 2 列WHERE:前镜像(原数据)SET:后镜像(新数据)
六、三种操作的 Binlog 表现
1. INSERT(只有后镜像)
### INSERT INTO `test`.`user` ### SET ### @1=2 ### @2='李四' ### @3=20
2. UPDATE(前 + 后镜像)
plaintext
### UPDATE ### WHERE(原数据) ### SET(新数据)
3. DELETE(只有前镜像)
### DELETE FROM `test`.`user` ### WHERE ### @1=1 ### @2='张三' ### @3=26
七、MySQL 5.7 Binlog 关键配置(my.cnf)
server-id = 1 log_bin = mysql-bin binlog_format = ROW # 5.7 默认 expire_logs_days = 7 # 自动清理 binlog_row_image = full # 默认:记录全部字段(推荐)
binlog_row_image=full:记录所有列(恢复最安全)minimal:只记录修改列(省空间,但恢复麻烦)
八、常见问题
1. 解析出来是乱码?
必须加:
--base64-output=DECODE-ROWS -vv
2. 看不到字段名?
用 -vv 而不是 -v。
3. 批量更新日志很大?
ROW 模式会记录每一行,正常现象。
总结(最核心)
- MySQL 5.7 默认 binlog = ROW 行模式
- 记录:行数据前后镜像
- 解析命令:
mysqlbinlog -vv --base64-output=DECODE-ROWS - 结构:事件头 → 表信息 → 前镜像 (WHERE) → 后镜像 (SET)
- 用途:主从复制、数据恢复、CDC 同步
以上就是MySQL中Binlog的完整格式解析(ROW 模式,默认)的详细内容,更多关于MySQL Binlog完整格式的资料请关注脚本之家其它相关文章!
相关文章
mysql 5.7.21 winx64免安装版配置方法图文教程
这篇文章主要为大家详细介绍了mysql 5.7.21 winx64免安装版配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-02-02
mysql 8.0.27 安装配置方法图文教程(Windows64位)
这篇文章主要为大家详细介绍了mysql 8.0.27 下载、安装与配置图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-04-04
Linux下安装MySQL过程(安装数据库、修改密码和端口、修改存储路径、开启远程访问)
这篇文章详细介绍了如何在服务器上安装和配置MySQL 8.0.28,包括下载、解压、安装、启动、登录、修改密码、端口、数据存储路径以及开启远程访问等步骤2024-11-11


最新评论