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