Mysql查看Binlog文件

前期准备

检查是否开启binlog

mysql> SHOW VARIABLES LIKE 'log_bin';
// 或者
mysql> SHOW VARIABLES LIKE 'log%';

ON代表开启,OFF代表关闭。如为OFF需 开启 后才能查看,但只能查看开启之后时间点的。
在这里插入图片描述
在这里插入图片描述

查看binlog文件有哪些

一般yum安装的mysql,binlog没指定的话,一般存在/var/lib/mysql/目录

mysql> SHOW MASTER STATUS;

在这里插入图片描述
binlog.000029即为最新的binlog文件,但需要主要binlog文件一般会有多个比如27、28

查看binlog文件

使用mysqlbinlog工具查看

以下命令不需要在mysql中执行,在linux-sell中执行即可

  • 查看所有日志内容
mysqlbinlog [binlog文件名]
  • 查看指定时间范围内的日志内容
mysqlbinlog --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" [binlog文件名]
  • 将日志内容输出到文件
mysqlbinlog [binlog文件名] > output.sql
  • 以文本格式查看日志内容
mysqlbinlog --verbose [binlog文件名]
  • 以可执行的 SQL 格式查看日志内容
mysqlbinlog --result-file=output.sql [binlog文件名]

例子

查询binlog.000028文件中,从2023-11-13 20:45:55到57秒,有’user‘关键词的语句

mysqlbinlog --start-datetime="2023-11-13 20:45:55" --stop-datetime="2023-11-13 20:45:57" --verbose /var/lib/mysql/binlog.000028 > test.sql | grep -i 'user' 

在这里插入图片描述
grep后面也可以是正则表达式,例如grep -i 'UPDATE.*user*WHERE.*id.*=.*26642'