前期准备
检查是否开启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'