MySQL二进制日志的清理

1.扯淡
我们在mysql运维过程中,经常遇到磁盘爆满,登陆server一看发现binlog占了80%的空间,鸡冻的同学就放大招:reset master。结果就石化了,忘了还有从库,从库复制报出1236的复制错误。我每个月至少遇到两三次租户干出这种事情,今天我们就来扯扯,我们平时binlog怎么清理,以及常用配置。

2.清理binlog的方法
(1).PURGE MASTER LOGS
(2).手动删除
(3).expire_logs_days
(4).reset master
我们常用的清理binlog的方法无外乎以上几种,那么他们分别用于哪些方面,以及怎么用。
方法一:PURGE LOGS
这种方法是直接选择我们需要purge掉的binlog,其实不到万不得已,一般不会手动去做这个事情,只有当磁盘爆满,可能会用到这个命令。
语法如下:

PURGE { BINARY | MASTER } LOGS
    { TO 'log_name' | BEFORE datetime_expr }

BINARY 和 MASTER 是同义词,随意用,但是我们习惯性的用BINARY。那么后面的TO和BEFORE有啥区别呢。我们平时最常用的无非就是以下两种形式:

(1).PURGE BINARY LOGS TO 'mysql-bin.010';
(2).PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';

PURGE BINARY LOGS TO 'mysql-bin.010';表示删除mysql-bin.010之前的binlog,但是不包括mysql-bin.010。
例如