背景
测试同学求助,服务器磁盘空间激增,怀疑是用了我的Docker镜像造成的。白眼~但也能理解,人的第一反应都是用了什么就是什么造成的影响。遂随手看了下,给出问题原因:MySQL binlog过多造成磁盘空间占用,自行清理。
经过一天,测试同学反馈,其求助的运维和研发未能解决问题。
咋这么菜呢……
遂亲自出手,结果发现研发改my.cnf不备份,直接改,都不知道改动了什么,查了下发现MySQL的binlog竟然有两个地方存放,就很烦人……问了研发得知加了三行配置,其中一行就是指定log_bin=/var/log/mysql/
。
醉了,原始目录是/var/lib/mysql
,要是不懂可以不改,改了又解决不了问题,就很让人烦躁。
解决步骤
- 停掉MySQL
- 删掉log_bin的配置行,发现MySQL起不来,核对发现磁盘满了。清掉不用的
/var/log/mysql/
下的binlog - 启动MySQL
- 由于测试环境并没有什么主从同步,所以binlog放出来纯属玩儿闹,人工看了下binlog最新的文件名:binlog.003546
- 命令行进入MySQL,使用官方指令将binlog删到binlog.003546:
PURGE BINARY LOGS TO 'binlog.003546';
- 重启MySQL,核对磁盘空间,发现已经释放了200多G了,问题解决。
问题分析
造成这一问题的原因是当初MySQL服务创建之初,并未制定binlog过期时间,解决问题之后,增加了1天过期的配置项:
expire_logs_days = 1
可能用到的指令总结
MySQL命令行查询过期时间
show variables like 'expire_logs_days';
MySQL命令行查询binlog相关配置
show variables like '%log_bin%'
参考资料
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。
留言