查看 MySQL binlog 日志需先确认开启状态(SHOW VARIABLES LIKE 'log_bin')、定位当前文件(SHOW MASTER STATUS)及列出所有日志(SHOW BINARY LOGS),再用 mysqlbinlog 工具按时间、位置、GTID 或行级方式解析,或在客户端用 SHOW BINLOG EVENTS 快速查看;复制场景下需重点分析 GTID 连续性、事件类型、表映射及错误标记。

查看 MySQL 的 binlog 日志,核心是确认日志是否开启、定位当前文件、再选择合适方式读取内容。复制场景下还需关注事件类型、GTID、位点或时间戳等关键信息,便于故障排查与数据一致性分析。
确认 binlog 是否已启用
登录 MySQL 后执行:
-
SHOW VARIABLES LIKE 'log_bin';—— 返回 ON 表示已开启 -
SHOW MASTER STATUS;—— 查看当前正在写入的 binlog 文件名和起始位置(File和Position) -
SHOW BINARY LOGS;—— 列出所有可用的 binlog 文件及大小,确认归档是否正常
用 mysqlbinlog 工具解析日志文件
这是最常用也最灵活的方式,适合复制分析和恢复操作:
- 基础查看:
mysqlbinlog mysql-bin.000003 - 按时间范围过滤:
mysqlbinlog --start-datetime="2025-12-20 09:00:00" --stop-datetime="2025-12-20 10:30:00" mysql-bin.000003 - 按位置范围过滤:
mysqlbinlog --start-position=1234 --stop-position=5678 mysql-bin.000003 - 显示行级变更(尤其 ROW 格式):
mysqlbinlog -v --base64-output=DECODE-ROWS mysql-bin.000003 - 远程读取主库日志(用于搭建 binlog server):
mysqlbinlog --read-from-remote-server --host=10.82.30.102 --port=3308 --user=yau --password mysql-bin.000003
在 MySQL 客户端内直接查看事件
适合快速检查少量事件,无需离开数据库环境:
-
SHOW BINLOG EVENTS;—— 默认查看第一个 binlog 文件的全部事件 -
SHOW BINLOG EVENTS IN 'mysql-bin.000003';—— 指定文件查看 -
SHOW BINLOG EVENTS IN 'mysql-bin.000003' FROM 1234 LIMIT 20;—— 从指定位置开始查 20 条,便于定位某次操作
注意:该命令不支持时间过滤,且对大文件响应慢,仅作辅助验证用。
复制场景下的关键分析点
做复制问题诊断时,重点关注以下内容:
-
GTID 信息:检查
Executed_Gtid_Set是否连续,有无跳过或重复;配合--exclude-gtids可跳过异常事务 -
事件类型:识别
Query_event(DDL/DML)、Rotate_event(日志切换)、Format_desc_event(格式声明)等 -
表映射与上下文:ROW 格式中需留意
Table_map_event出现位置,否则后续Write_rows_event会因缺表定义而无法解析 -
错误标记:查找
error_code非零的事件,或日志中带# Warning的行,常对应复制中断原因










