如何查看binlog日志_mysql复制日志分析

1次阅读

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

如何查看binlog日志_mysql复制日志分析

查看 MySQL 的 binlog 日志,核心是确认日志是否开启、定位当前文件、再选择合适方式读取内容。复制场景下还需关注事件类型、GTID、位点或时间戳等关键信息,便于故障排查与数据一致性分析。

确认 binlog 是否已启用

登录 MySQL 后执行:

  • SHOW VARIABLES LIKE 'log_bin'; —— 返回 ON 表示已开启
  • SHOW MASTER STATUS; —— 查看当前正在写入的 binlog 文件名和起始位置(Fileposition
  • 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 的行,常对应复制中断原因
text=ZqhQzanResources