1、现象:查询慢,插入数据插入不了,进程卡住
2、排查
df -h 查看,发现/mnt 磁盘200G,使用100%,还剩下20k的磁盘空间
du -h --max-depth=1 /mnt/ 进一步排查
cd /mnt/mysql/data
ll 排查到这个文件夹的binlog太多导致撑满
3、解决
执行sql,清除3天之前的binlog
PURGE MASTER LOGS BEFORE DATE_SUB(NOW( ), INTERVAL 3 DAY);
进程卡住,分析
show PROCESSLIST 发现清除线程是staring状态,但是不执行,分析原因可能是磁盘可用空间太小20k
把一个1G多的binlog移到别的地方
mv mysql-bin.000205 /opt/
再刷新,发现binlog已经被清除,磁盘空间可用97%,问题解决
4、防止问题重现
找到mysql的配置文件,加入定期清除的变量
vi /mnt/mysql/conf/sonar.cnf
加入配置,保存
expire_logs_days = 15
cd /mnt/mysql/
sh run.sh 此脚本会删除docker容器,并重启
执行sql,查看变量是否设置成功
show variables like '%expire_logs_days%';
可以查出来 expire_logs_days 的值为15,就ok了!