mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
一.概述
由于服務器生成的二進制日志文件以二進制格式保存,所以如果要想檢查這些文件的文本格式,就會用到mysqlbinlog日志管理工具。
mysqlbinlog的語法如下:
mysqlbinlog [options] log-files log-files2...
其中options有很多選項,常用如下:
選項
說明
-d, --database=name
指定數據庫名稱,只列出指定的數據庫相關操作。
-o, --offset=#
忽略掉日志中的前n行命令
-r, --result-file=name
將輸出的文本格式日志輸出到指定文件
-s,--short-form
顯示簡單格式,省略掉一些信息
--set--charset=char-name
在輸出為文本格式時,在文件第一行加上set names char-name.
-- start-datetime=name-stop-datetime=name
指定日期間隔內的所有日志
--start-position=# --stop-position=#
指定位置間隔內的所有日志
1.1 開啟binlog日志
默認情況下是未打開binlog日志,可以通過以下二種方式查看:
mysql> show binarylogs;
ERROR1381 (HY000): You are not using binarylogging--或者這樣查看
mysql> show variables like '%log_bin%
開啟binlog日志,修改my.cnf文件重啟mysql服務,如下所示:
再次查詢binlog日志狀態:
二. 使用mysqlbinlog查看日志
--先在test表中插入一條數據退出。
mysql> insert into a values('testbinlog');
--查看binlog位置
[root@hsr mysql]# cd/var/lib/mysql
[root@hsr mysql]#lsmysql-bin.000001 mysql-bin.index
2.1?使用mysqlbinlog查看日志 不加任何options參數
[root@hsr~]# cd /usr/local/mysql/bin
[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.000001
上面的日志文件除了創建表和刪除表的sql外,操作數據庫的語句都加密了。
2.2 使用參數"--base64-output=decode-row -v"查看具體的sql語句,如下命令
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001
上圖中 at 291是插入語句的開始位置, at 384是插入語句的結束位置。如果后續該表數據丟失,可以根據這兩個地方執行恢復。也可以根據開始時間和結束時間來恢復,后面再講日志時具體介紹。
2.3? 加-d選項,將只顯示對test數據庫的操作日志
[root@hsr bin]# ./mysqlbinlog?? /var/lib/mysql/mysql-bin.000001 -d test
2.4??加-o選項, 忽略掉日志中的前n個操作。演示下
--插入三條數據
INSERT INTO a VALUES('testbinlog2')INSERT INTO a VALUES('testbinlog3')INSERT INTO a VALUES('testbinlog4')[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 -d test -o 14
上圖顯示日志生成后,從at 898行開始顯示。 14個操作代表:日志顯示跳過14個at。
2.5 加-r選項
將輸出的文本格式日志輸出到指定文件,下面將文件結果輸出到文件resultfile中。
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 -r resultfile
[root@hsr bin]#more resultfile
2.6 加-s 將內容進行簡單顯示
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 -s
如上圖所示,簡單顯示后,沒有了詳細的sql語句。
2.7?加"--start-datetime--stop-datetime"顯示9:00 ~12:00之間的日志
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001
--start-datetime='2018/08/30 09:00:00' --stop-datetime='2018/08/30 12:00:00'
如上圖所示:最后顯示的時間截是1535600091, 轉換后是2018-08-30 11:34:51。 開始和結束日期可以只寫一個。
2.8 加"--start-position=#和--stop-position=#" 和日期范圍類似,不過更精確
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 --start-position=944
總結
以上是生活随笔為你收集整理的mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国网站服务器有哪些,可以搭建什么网站?
- 下一篇: sql取上个月年月_sql 查询本年、本