码迷,mamicode.com
首页 > 数据库 > 详细

mysqlbinlog 抽取(读取) 二进制日志

时间:2020-06-17 20:34:49      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:data   根据   ops   精确   进制   定义   put   ima   利用   

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 -vvv  --start-datetime=‘2020-06-17 06:06:06‘    --stop-datetime=‘2020-06-17 16:06:06‘  mysql-bin.xxxx   >  db_name.sql  

 --base64-output=decode-rows -vv  (这里用几个v,貌似还有说法,没细看,有兴趣的可以了解下)

技术图片

 

mysqlbinlog 抽取(读取) 二进制日志

标签:data   根据   ops   精确   进制   定义   put   ima   利用   

原文地址:https://www.cnblogs.com/cntzyw/p/13154117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!