使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句 (原)
前提
MySQL开启了binlog日志
操作
1. 查看MySQL是否开启binlog(进mysql操作)
mysql> show variables like 'log_bin%';
2. 查询binlog文件名
mysql>show master status(进mysql操作)
3. 查mysqlbinlog工具的位置(mysql自带,用来查看二进制日志)(系统目录查看,不进mysql)
(MySQL二进制文件直接打开是看不懂的,需要用这个自带的查看工具查看)
[root@iZ25f7emo7cZ /]# find / -name mysqlbinlog
4. 查找mysql-bin.000007文件位置(系统目录查看)
find / mysql-bin.000007
5. 将mysql日志内容输入某个文件中.(-v显示sql语句)
先进入mysqlbinlog操作目录下,进入上面所述第三步文件目录
将目标文件拷贝出来用sublime,editplus等工具,搜索相关的sql即可
[root@iZ25f7emo7cZ bin]# ./mysqlbinlog ./usr/local/mysql/data/mysql-bin.000007 -v /a.txt
或者
[root@iZ25f7emo7cZ bin]# ./mysqlbinlog ./usr/local/mysql/data/mysql-bin.000007 -v --result-file=/usr/local/a.txt
--------------------------------------------------------------------------END-------------------------------------------------------------------------------
文末附上几个可能用得上的查询日志的条件命令示例
1、查询时间段内日志的执行内容
mysqlbinlog --start-datetime='2018-01-08 02:01:00' --stop-datetime='2018-01-08 02:30:10' -d test /var/lib/mysql/mysql-bin.000170 -v
2、查询时间段内日志中执行的删除语句
mysqlbinlog --start-datetime='2018-01-08 02:01:00' --stop-datetime='2018-01-08 02:30:10' -d test /var/lib/mysql/mysql-bin.000170 -v|grep DELETE -A 5
3、统计时间段内日志中执行的删除语句
mysqlbinlog --start-datetime='2018-01-08 02:01:00' --stop-datetime='2018-01-08 02:30:10' -d test /var/lib/mysql/mysql-bin.000170 -v|grep DELETE |wc -l