df -h
➜ / df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 393M 3.5G 11% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/vda1 40G 30G 7.2G 81% /
tmpfs 777M 0 777M 0% /run/user/1000
sudo du -sh *
➜ / sudo du -sh *
0 bin
211M boot
...
2.2G usr
26G var
然后进入/var目录下,继续使用该命令查看,发现是binlog过多导致,需要删除binlog日志。
mysql的binlog必不可少,但是不清理的话,小云盘经受不住每天频繁的插入删除。所以binlog日志还需要删除。
mysql> show variables like ‘%expire%’;
查询上述参数后发现在MySQL 8.0.12版本中默认开启binlog日志并设置为binlog_format=row
,binlog失效日期参数为 binlog_expire_logs_seconds
,默认30天过期。
注释:
在MySQL8.0 版本中新增参数binlog_expire_logs_seconds
,可以精确到秒,而此前版本中expire_logs_days的单位为天,最小值为1,在MySQL8.0 GA中此参数标记为deprecated 。
在MySQL 8.0 GA版本默认使用binlog_expire_logs_seconds
,时间为2592000秒,30天。
inlog_expire_logs_seconds
和expire_logs_days
都没设置值,则使用默认值的 binlog_expire_logs_seconds
值,即30天;binlog_expire_logs_seconds
或者expire_logs_days
其中一个设置为非0值则非0值的参数作为binlog日志失效期;binlog_expire_logs_seconds
和expire_logs_days
参数都设置为非0值则使用binlog_expire_logs_seconds
值,expire_logs_days
值则失效并对其发出告警信息。若要关闭自动清除binlog文件的功能则需要显示指定binlog_expire_logs_seconds=0
并且不设置expire_logs_days
的值。
为了兼容早期版本若显示指定了expire_logs_days =0
而没有指定binlog_expire_logs_seconds
的值,此时自动清理binlog日志则是 禁用 的,并且此时binlog_expire_logs_seconds的默认值不适用。
手动清理当然指的不是 rm -rf ** ,这样可能会导致 binlog.index 错乱。
mysql -uroot -p # 登陆mysql
show binary logs; # 查看日志文件
show master status; # 查看正在使用的日志文件:binlog.000015
purge binary logs to 'binlog.000015'; # 删除binlog.000015文件以外的日志文件
设置过期48小时
mysql> set global binlog_expire_logs_seconds=60*60*48;
mysql> flush logs; # 刷一下log使上面的设置生效,否则不生效。注意:此配置重启mysql后失效。