mysql purge master logs to binlog

max_binlog_files,是Percona MySQL分支提供的限制binlog文件数量的参数,在删除归档数据、binlog增长很快的情况下,很实用的一个参数。

该参数也对正在被使用的binlog提供了保护,是purge不掉的.

手动执行PURGE MASTER LOGS操作,发现执行速度很快,但存在WARNING:

+---------+------+-----------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                         |
+---------+------+-----------------------------------------------------------------------------------------------------------------+
| Warning | 1867 | file ./mysql-bin.011530 was not purged because it was being read by 1 thread(s), purged only 0 out of 51 files. |
+---------+------+-----------------------------------------------------------------------------------------------------------------+

在使用PURGE MASTER LOGS清理BINLOG时,如果还有活跃从库需要访问这些BINLOG,那么PURGE会失效。

通过SHOW PROCESSLIST可以发现:

*************************** 11. row ***************************
     Id: 6629525
   User: magpie
   Host: xxx.xxx.xxx.xxx:62054
     db: NULL
Command: Binlog Dump
   Time: 283180
  State: Sending to client
   Info: NULL

而283180/60/60=3.27,即该进程处于“Sending to client”已经3天,查看最早BINLOG也是3天前的,因此可以断定由该进程引起,手动KILL该进程并再次运行PURGE MASTER LOGS,发现BINLOG被正常清理。

删除binlog命令:

--清除MySQL-bin.010日志
mysql> PURGE MASTER LOGS TO 'MySQL-bin.010';
 
--清除2008-06-22 13:00:00前binlog日志
mysql> PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';   
 
--清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
mysql> PURGE MASTER LOGS BEFORE DATE_SUB( NOW(), INTERVAL 3 DAY); 

 

posted @ 2021-02-19 14:55  __Yoon  阅读(461)  评论(0编辑  收藏  举报