定时自动清理MySQL慢查询日志释放磁盘

为什么需要定期清理慢查询日志

慢查询日志是MySQL记录执行时间超过阈值的SQL语句的文件。
如果长时间不处理,这个文件可能膨胀到几十GB,直接导致磁盘空间告警,甚至影响数据库写性能。很多新手以为只要开启了慢日志,就必须留着,其实完全可以按天、按周自动清理,既保留近期排查数据,又避免磁盘爆满。

第一步:确认慢查询日志的当前位置和大小

登录服务器后,先找到慢日志的实际位置和占用情况。

  1. 连接MySQL(或使用宝塔数据库管理工具):
   mysql -u root -p

然后执行:

   SHOW VARIABLES LIKE 'slow_query_log%';

会输出类似:

  • slow_query_log = ON
  • slow_query_log_file = /var/lib/mysql/slow-query.log
  1. 回到操作系统,查看文件大小:
   ls -lh /var/lib/mysql/slow-query.log

记下你实际的路径,后续脚本中要使用。

第二步:用脚本+定时任务实现自动清理

清理的原则是:保留最近N天的日志,其余清空(或者备份后再删除)。
这里以保留7天为例。

  1. 创建一个清理脚本(比如 /opt/clean_slow_log.sh):
   #!/bin/bash
   # 设置慢日志路径(替换为你自己查到的路径)
   SLOW_LOG="/var/lib/mysql/slow-query.log"
   # 保留最近7天的日志
   find $(dirname "$SLOW_LOG") -name "$(basename "$SLOW_LOG")" -mtime +7 -exec truncate -s 0 {} \;

注意truncate -s 0 会直接清空文件内容,不会删除文件本身,MySQL进程仍能正常写入。
不要用 rm 删除文件,否则MySQL会重新创建,可能产生新文件。

  1. 赋予执行权限:
   chmod +x /opt/clean_slow_log.sh
  1. 添加定时任务,每天凌晨3点执行一次:
   crontab -e

在末尾添加一行:

   0 3 * * * /bin/bash /opt/clean_slow_log.sh > /dev/null 2>&1
  1. 保存退出,重启cron(根据系统):
   systemctl restart cron   # 或 service cron restart

常见问题和避坑提醒

  • Q:执行脚本后MySQL不写日志了? A:只要文件还在,MySQL会继续追加。如果误删了文件,MySQL不会自动创建新文件,需要去MySQL里执行 SET GLOBAL slow_query_log=OFF;SET GLOBAL slow_query_log=ON; 来重置。
  • Q:想备份而不是直接清空? A:在清理前复制一份到压缩目录:cp "$SLOW_LOG" "/backup/slow-$(date +%Y%m%d).log" 再清空。
  • Q:宝塔面板用户怎么配? A:在宝塔的计划任务里添加Shell脚本,内容同上,时间选每天。更方便。
  • Q:如何只保留最近3天? A:把 -mtime +7 改成 -mtime +3 即可。

验证清理是否生效及后续建议

  1. 手动执行一次脚本看效果:
   bash /opt/clean_slow_log.sh
   ls -lh /var/lib/mysql/slow-query.log   # 检查文件大小是否变小
  1. 确认MySQL日志仍在正常写入:临时生成一条慢查询(比如 SELECT SLEEP(5);),然后查看文件末尾是否有新记录:
   tail -n 5 /var/lib/mysql/slow-query.log
  1. 建议定期(比如每月)检查磁盘使用率,同时关注慢日志文件是否在预期范围内增长。如果增长过快,说明数据库存在大量低效查询,建议配合慢日志分析工具(如 pt-query-digest)优化SQL。

如果你按照上述步骤操作,磁盘空间紧张的问题应该会明显缓解。
遇到报错时,优先检查脚本中的路径是否写对、crontab是否生效(可以查看 /var/log/syslog/var/log/cron)。

分享到:
上一篇
SSH密钥批量配置免密登录多服务器集群完整教程
下一篇
宝塔面板手机APP远程重启站点与AI服务实操教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意