mysqlbinlog 抽取(讀取) 二進制日志


mysql 一般沒人會開啟全局日志,量太大了,還占用服務器資源。但是binlog 都是開啟的(不會還有不開啟binlog的兄弟吧)

有時會遇到  查詢某段時間sql歷史的 問題:

二進制日志沒法直接看,mysql有自帶的mysqlbinlog 命令/工具  可以解析二進制日志

最開始自己一般直接用   mysqlbinlog --database=db_name  mysql-bin.xxxx   >  db_name.sql   過濾到想要的庫

grep -B3 -w tb_name db_name.sql > tb_name.sql   過濾到想要的表 ,這里grep -B  可以看自己情況設置幾,不太明白的可以先了解下grep命令

再根據時間用sed截取 時間段的日志  cat tb_name.sql | sed -n '/開始時間/,/結束時間/p'     查看 

這是我第一次查看方法,這個方法查看時間段有點傻。。。。。

 

后來經過同事提攜,升級了。mysqlbinlog本來就可以定義開始時間和結束時間

mysqlbinlog --database=db_name   --start-datetime='2020-06-17 06:06:06'    --stop-datetime='2020-06-17 16:06:06'  mysql-bin.xxxx   >  db_name.sql  

而且也可以利用pos點來精確位置 --start-opsiton  --stop-position 

 

后來又遇到一次,mysqlbinlog解析不出來,解析出來的還是看不了。因為binlog的格式問題,這個就不詳細說明了

加參數

mysqlbinlog --database=db_name  --base64-output=decode-rows -v  --start-datetime='2020-06-17 06:06:06'    --stop-datetime='2020-06-17 16:06:06'  mysql-bin.xxxx   >  db_name.sql  

 

mysql 8.0版本mysqlbinlog --database=db_name  加數據庫名解析出的日志沒有sql語句,不加--database=db_name,全局導出就能看到,有懂的朋友幫忙解答下。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM