
MySQL 运维中经常会解析 binlog 文件,来查看 MySQL 做了什么操作。
简单场景,一个研发同学执行了 delete from table where XXX and XX。这时候需要 dba 同
学来找回数据。此处找回我们就需要解析 mysql binlog 看看到底删除了什么,或者更新了什
么。
mysql 日志格式 ROW 模式,建议生产都用 ROW
解析工具:MySQLbinlog binlog2sql(美团开源工具,非常建议使用)
mysql 版本:8.0.19
一、mysqlbinlog 解析文件
解析之前需要查看 binlog 格式,默认情况下建议生产环境全部采用 ROW 格式
通过参数 binlog_format 参数的值,可以设置 binlog 的格式,可选值有
statement、row、mixed
statement 格式:记录数据库执行的原始 SQL 语句
row 格式:记录具体的行的修改,这个为目前默认值
mixed 格式:因为上边两种格式各有优缺点,所以就出现了 mixed 格式
二、mysqlbinlog 语法解析
需要注意的是
# mysqlbinlog 的执行格式
mysqlbinlog [options] log_file ...
# 查看 bin-log 二进制文件(shell 方式)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003
评论