使用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

猜你喜欢

转载自www.cnblogs.com/gyrgyr/p/9983501.html