解析Mysql Binlog

Posted by Jason on April 16, 2025

如果你有一个mysql binlog文件,你要怎么才能看到它里面的内容啦?

这个文件是一个二进制文件,不可以直接用文本文件查看的,必须用一些解析工具可以看到里面的内容。

下面就演示如何使用mysqlbinlog工具查看日志内容。

下载mysqlbinlog工具

下载自己电脑版本和你得到的mysql binlog文件对应的版本号。

例如,我是Mac OS。 mysql是5.7的版本。

我就下载如下链接: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-macos10.14-x86_64.tar.gz

下载地址: https://downloads.mysql.com/archives/community/

使用mysqlbinlog命令解析文件

mysqlbinlog常用的选项

选项 说明 示例
--no-defaults 忽略本地配置文件  
--start-position=N 从某个位置开始读取 --start-position=1234
--stop-position=N 读取到某个位置结束 --stop-position=4567
--start-datetime="YYYY-MM-DD HH:MM:SS" 设置起始时间 --start-datetime="2025-04-15 00:00:00"
--stop-datetime="YYYY-MM-DD HH:MM:SS" 设置结束时间 --stop-datetime="2025-04-15 23:59:59"
--base64-output=DECODE-ROWS 配合 -v 用于解析基于行的事件(row-based) --base64-output=DECODE-ROWS -v
--skip-gtids 跳过 GTID(全局事务 ID)的相关信息输出  

执行示例

./mysqlbinlog --no-defaults --skip-gtids --base64-output=DECODE-ROWS -v /data/binlog-171572-binlog.031007
# at 545730
#240822 10:23:21 server id 2132407162  end_log_pos 546331 CRC32 0xaf5952c2 	Update_rows: table id 133 flags: STMT_END_F
### UPDATE `chuangliang_ad_task_toutiao`.`task_log_toutiao_project_info`
### WHERE
###   @1=262479479
###   @2=0
###   @3=0
###   @4='crontab_task_37272413_20240822101033'
###   @5=231
###   @6='_1761244942147632'
###   @7=12002623515
###   @8='processing'
###   @9='2024:08:22'
###   @10='ProjectInfo'
###   @11=''
###   @12=''
###   @13=11
###   @14=0
###   @15=''
###   @16=1724292677
###   @17=1724293401
###   @18=0
###   @19=12000023236
###   @20=0
###   @21='{"ip":"127.0.0.1"}'
### SET
###   @1=262479479
###   @2=0
###   @3=0
###   @4='20240822101033'
###   @5=231
###   @6='1761244942147632'
###   @7=12002623515
###   @8='success'
###   @9='2024:08:22'
###   @10='ProjectInfo'
###   @11=''
###   @12=''
###   @13=11
###   @14=148
###   @15='{}'
###   @16=1724292677
###   @17=1724293401
###   @18=0
###   @19=12000023236
###   @20=0
###   @21='{"ip":"127.0.0.1"}'

参考地址