一、背景
近期发现测试环境的Mysql数据库一直磁盘爆满,查看数据目录发现binlog日志很多很大,特记录处理过程。
二、查看所有binlog日志
show binary logs;
三、3种处理方式
3.1 自动删除(永久配置)
cat /etc/my.cnf
expire_logs_days = 2
#保留最近2天的binlog文件;expire_logs_days 为binlog过期时间,默认值为0,表示“永不过期”,重启数据库生效
临时生效:
show variables like 'expire_logs_days';
set global expire_logs_days=1;
设置之后不会立即清除,触发条件是:
1)binlog大小超过 max_binlog_size
2)手动执行flush logs
3)重新启动时(MySQL 将会new一个新文件用于记录binlog)
3.2 手动删除(安全处理)
purge会更新mysql-bin.index中的条目,而直接删除的话,mysql-bin.index文件不会更新。mysql-bin.index的作用是加快查找binlog文件的速度
#清除MySQL-bin.010日志
PURGE MASTER LOGS TO 'MySQL-bin.010';
#清除2008-06-22 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';
#清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
PURGE MASTER LOGS BEFORE DATE_SUB( NOW(), INTERVAL 3 DAY);
3.3 RESET MASTER; #该命令将删除所有BINLOG日志
注:生产环境需要先备份数据后再执行删除操作