mysql-bin.xxx数据记录暴增

发布于 2022-01-11  1326 次阅读


情景:

突然某一天,二进制记录文件,一天能产生20G多,导致磁盘不够用,io不够用。

 

1、查看某一个binlog文件,看看到底是什么语句导致的

/usr/local/mysql/bin/mysqlbinlog mysql-bin.001435 > 123.sql

注意:如果出现BINLOG 'XXXXX'的,说明是Base64编码后的,需要中间加上--base64-output=decode-rows -v命令就能展示出来sql了:如:

# at 4
#200904 15:59:30 server id 1  end_log_pos 120 CRC32 0x13ff3b26  Start: binlog v 4, server v 5.6.45-log created 200904 15:59:30 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
4vNRXw8BAAAAdAAAAHgAAAABAAQANS42LjQ1LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADi81FfEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAASY7
/xM=
'/*!*/;

解析:

base64-output,可以控制输出语句输出base64编码的BINLOG语句;
decode-rows:选项将把基于行的事件解码成一个SQL语句
-r, --result-file=name 将输入的文本格式的文件转储到指定的文件。

2、过滤事件

cat 123.sql |egrep "DELETE|INSERT|UPDATE|ALTER|CREATE" > 111.txt

3、事件的记录次数统计

 #cat 111.txt | sort | uniq -c
 149206 ### DELETE FROM `inf`.`statresult_202201`
 149214 ### INSERT INTO `inf`.`statresult_202201`
     96 ### UPDATE `inf`.`pay_action`
     90 ### UPDATE `inf`.`player`
      2 ### UPDATE `inf`.`stattarget`

 

4、bin-log的其他内容介绍