当前位置: 代码网 > it编程>数据库>Mysql > MySQL中Binlog的完整格式解析(ROW 模式,默认)

MySQL中Binlog的完整格式解析(ROW 模式,默认)

2026年03月31日 Mysql 我要评论
mysql 5.7 默认 binlog 格式是 row(行模式),这是生产环境最常用、最稳定的格式。我给你一份可直接落地使用的解析指南,包含格式结构、解析命令、字段含义、实战案例。一、mysql 5.

mysql 5.7 默认 binlog 格式是 row(行模式),这是生产环境最常用、最稳定的格式。我给你一份可直接落地使用的解析指南,包含格式结构、解析命令、字段含义、实战案例。

一、mysql 5.7 binlog 核心特性

  1. 默认格式row(行模式)
  2. 记录内容:不存 sql,只存行数据变更的前后镜像
  3. 主从复制:绝对一致,无函数 / 存储过程偏差
  4. 支持:数据恢复、闪回、cdc 同步(canal/debezium)
  5. binlog 文件:二进制文件,必须用 mysqlbinlog 解析

二、3 种格式在 5.7 中的表现

表格

格式说明5.7 是否推荐
row(默认)记录行变更✅ 强烈推荐
statement记录原始 sql❌ 不推荐(主从不一致)
mixed自动切换⚠️ 一般不使用

查看当前格式:

show variables like 'binlog_format'; 

三、row 模式 binlog 结构(最重要)

一个完整的 binlog 事件包含:

  1. 事件头:时间、位置、语句类型
  2. 表映射:库名、表名、字段结构
  3. 行数据
    • 前镜像(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 模式会记录每一行,正常现象。

总结(最核心)

  1. mysql 5.7 默认 binlog = row 行模式
  2. 记录:行数据前后镜像
  3. 解析命令mysqlbinlog -vv --base64-output=decode-rows
  4. 结构:事件头 → 表信息 → 前镜像 (where) → 后镜像 (set)
  5. 用途:主从复制、数据恢复、cdc 同步

以上就是mysql中binlog的完整格式解析(row 模式,默认)的详细内容,更多关于mysql binlog完整格式的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com