请知悉:本文最近一次更新为 9个月 前,文中内容可能已经过时。

背景

测试同学求助,服务器磁盘空间激增,怀疑是用了我的Docker镜像造成的。白眼~但也能理解,人的第一反应都是用了什么就是什么造成的影响。遂随手看了下,给出问题原因:MySQL binlog过多造成磁盘空间占用,自行清理。

经过一天,测试同学反馈,其求助的运维和研发未能解决问题。

咋这么菜呢……

遂亲自出手,结果发现研发改my.cnf不备份,直接改,都不知道改动了什么,查了下发现MySQL的binlog竟然有两个地方存放,就很烦人……问了研发得知加了三行配置,其中一行就是指定log_bin=/var/log/mysql/

醉了,原始目录是/var/lib/mysql,要是不懂可以不改,改了又解决不了问题,就很让人烦躁。

解决步骤

  1. 停掉MySQL
  2. 删掉log_bin的配置行,发现MySQL起不来,核对发现磁盘满了。清掉不用的/var/log/mysql/下的binlog
  3. 启动MySQL
  4. 由于测试环境并没有什么主从同步,所以binlog放出来纯属玩儿闹,人工看了下binlog最新的文件名:binlog.003546
  5. 命令行进入MySQL,使用官方指令将binlog删到binlog.003546:
    PURGE BINARY LOGS TO 'binlog.003546';
  6. 重启MySQL,核对磁盘空间,发现已经释放了200多G了,问题解决。

问题分析

造成这一问题的原因是当初MySQL服务创建之初,并未制定binlog过期时间,解决问题之后,增加了1天过期的配置项:

expire_logs_days = 1

可能用到的指令总结

MySQL命令行查询过期时间

show variables like 'expire_logs_days'; 

MySQL命令行查询binlog相关配置

show variables like '%log_bin%'

参考资料

PURGE BINARY LOGS

正确清理mysql-bin


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《MySQL清理binlog方式》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌