如果你的数据库没有搭建主从同步这样的服务 , binlog 日志也不用的情况下 , 你可以将 /etc/my.cnf 文件下面行删除或注释掉
log-bin=mysql-bin
如果你需要这样的文件 , 那么建议你在主配置文件 /etc/my.cnf 中添加如下行 , 来限制 binlog 日志文件存在时间 , 过期自动删除
expire_logs_days = 7 # 只保留 7 天的日志文件
如果你直接得到一台服务器 , 上面的 binlog 日志已经影响到了磁盘空间 , 那么你将使用下面命令清除
mysql> reset master; # 清空所有 binlog 文件
如果你得到的服务器 , mysql 还做了主从同步 , 那么上面的命令就不适合你了 , 因为 binlog 文件删除过多的话 , 会导致数据不同步
mysql> show slave status\G # 你首先要来 slave 上查看从库读 binlog 到了哪里
Master_Log_File: mysql-bin.000009 # 我们可以看到是 mysql-bin.000009
mysql> purge master logs to 'mysql-bin.000009'; # 我们可以在 master 中执行这条指令 , 将 binlog 文件删除至 mysql-bin.000009 前
mysql> purge master logs before '2014-11-18 00:00:00'; # 将 binlog 文件删除至此日期前
---------------------------------------其他两种不重启mysql清理日志方式-------------------------------------------------------
第一种:不重启mysql,配置自动清理mysql主从日志:
主库:
查看binlog文件列表
mysql> show binary logs;
查看日志文件的状态
mysql> show variables like '%log%';
保留最新7天数据
mysql> set global expire_logs_days = 7;
mysql> flush logs;
从库:
mysql> show binary logs;
mysql> set global expire_logs_days=7;
mysql> flush logs;
第二种:手动清理,定期清理
手动清除binlog文件
mysql> > PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY);