1. 程式人生 > >使用mysqlbinlog從二進位制日誌檔案中查詢mysql執行過的sql語句

使用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二進位制檔案直接開啟是看不懂的,需要用這個自帶的檢視工具檢視)
        [

[email protected] /]#  find / -name mysqlbinlog
  
4. 查詢mysql-bin.000007檔案位置(系統目錄檢視)
      find / mysql-bin.000007

     
5. 將mysql日誌內容輸入某個檔案中.(-v顯示sql語句)
     先進入mysqlbinlog操作目錄下,進入上面所述第三步檔案目錄

    

  將目標檔案拷貝出來用sublime,editplus等工具,搜尋相關的sql即可
           [

[email protected] bin]# ./mysqlbinlog ./usr/local/mysql/data/mysql-bin.000007 -v /a.txt
          

    或者
          [[email protected] 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