首页/数据/数据工程与 ETL 速查/binlog 事件类型速查
CDC 与同步53 条

binlog 事件类型速查

binlog 由事件流组成:WRITE_ROWS/UPDATE_ROWS/DELETE_ROWS 承载行级增删改,QUERY 事件承载 DDL 与 BEGIN,XID 标记事务提交,GTID 事件标记事务归属,另有 FORMAT_DESCRIPTION、ROTATE 等辅助事件。读懂事件类型才能理解 CDC 工具的输出。

binlog 事件类型是什么

binlog 是一串事件流,而不是一堆 SQL 文本。ROW 格式下,行级变更由 WRITE_ROWS、UPDATE_ROWS、DELETE_ROWS 三类事件承载;DDL 与事务起点由 QUERY 事件承载;XID 标记事务提交;GTID 事件记录事务归属;此外还有 FORMAT_DESCRIPTION、ROTATE、TABLE_MAP 等辅助事件。理解事件类型,才能判断 CDC 工具的输出是否完整、事务边界是否正确。

基本信息

前提配置binlog_format=ROW 才能提供完整行镜像,CDC 工具普遍依赖
行事件WRITE_ROWS(插入)、UPDATE_ROWS(更新前后镜像)、DELETE_ROWS(删除前镜像)
结构事件TABLE_MAP 描述表结构与列映射,行事件依赖它解析
事务事件QUERY(BEGIN、DDL)、XID(提交)、GTID(事务标识)
辅助事件FORMAT_DESCRIPTION(文件头)、ROTATE(切换文件)、PREVIOUS_GTIDS(文件起始的 GTID 集合)
行镜像策略binlog_row_image 为 FULL 时带全列,MINIMAL 时更新事件只带变更列与主键

典型使用场景

  • 排查 CDC 输出缺字段:确认 binlog_row_image 是否被改为 MINIMAL
  • 理解事务边界:确认订阅到的变更是否已提交,避免下游看到中间态
  • 定位断点问题:跨文件切换时核对 ROTATE 与位点记录是否同步更新
  • 验证工具正确性:用 SHOW BINLOG EVENTS 与工具输出逐条比对
  • 解析 DDL 影响:从 QUERY 事件中获取表结构变更时间点

常见事件速查

事件含义CDC 视角
WRITE_ROWS插入行的镜像转换为 insert
UPDATE_ROWS更新前后的行镜像转换为 update,需要完整行镜像
DELETE_ROWS删除前的行镜像转换为 delete,或输出墓碑行
QUERYDDL、BEGIN 等语句提供表结构变化与事务起点
XID事务提交标记按事务提交后再下发,避免中间态
GTID事务全局标识用于断点续传与去重
TABLE_MAP表与列的结构映射行事件解析的前提,缺失则无法解析
ROTATEbinlog 文件切换跨文件时记录新文件名与位点

查看事件流

查看事件流
-- 在实例内查看某个文件的事件序列(会扫描文件,生产谨慎)
SHOW BINLOG EVENTS IN 'mysql-bin.000123' LIMIT 50;
-- 输出列:Log_name、Pos、Event_type、Server_id、End_log_pos、Info

离线解析(伪 SQL 形式)

离线解析(伪 SQL 形式)
# -v 显示伪 SQL,-v -v 进一步展开字段类型与元数据
mysqlbinlog -v -v --base64-output=DECODE-ROWS /data/binlog/mysql-bin.000123 | head -40
# 关注:TABLE_MAP 出现后才会有 WRITE_ROWS/UPDATE_ROWS/DELETE_ROWS
# XID 出现表示该事务已提交,可安全对外输出
一个典型事务是 BEGIN(QUERY)→ 若干行事件 → XID 提交;消费侧应在提交点之后再对外输出,否则长事务期间下游会反复看到未提交的中间状态。
binlog_row_image 被改成 MINIMAL 后,UPDATE 事件只带变更列与主键,CDC 与下游收到的事件会缺少完整行镜像,此时必须靠主键回查源库才能补齐。

易错点

  • 把单个行事件当完整事务提前下发,长事务场景下游频繁看到中间状态
  • 忽略 ROTATE 事件:跨文件切换时位点记录没有同步更新,断点续传接错位置
  • binlog_row_image 被改为 MINIMAL,UPDATE 事件缺少旧值,下游更新逻辑失效
  • 忽略 TABLE_MAP 事件直接解析行事件,表结构变化后解析出错甚至错位
  • 用 STATEMENT 格式的 binlog 做 CDC,拿不到行级镜像,随机函数与多行更新都无法还原

数据来源与参考

  • MySQL 8.0 Reference Manual: Binary Log Event Descriptions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌