记一次磁盘爆满清理记录

214 阅读1分钟

记一次磁盘爆满清理记录

前言

服务器磁盘爆满,经验有限想要排查一下是哪个服务占用了磁盘。只能一步一步排查目录,顺着目录大小进行排查。

相关环境:Centos7 MySql8

排查

  1. 使用命令df -h可以看到当前磁盘使用情况

1663557315903.jpg

  1. 进入爆满的磁盘使用命令du -sh * | sort -n按照目录递归遍历目录下所有文件大小进行排序

1663557664611.jpg

最后定位到MySql的data文件夹/var/lib/mysqlbinglog文件过大

解决

  • MySql的binglog记录所有的数据库操作,默认情况下过期时间为0也就是说永远不过期。由于MySql记录了TCP的上下线记录,这个上下线记录很庞大,日积月累产生了大量binglog文件。
  • 进入MySQL通过命令show variables like '%expire%%';查看binglog的过期时间设置。

1663558672073.jpg

注意:MySQL8中expire_logs_days参数已经废弃,改为参数binlog_expire_logs_seconds,此为秒值。

  • 如果磁盘空间有限,或者不需要这些记录文件,可以设置过期时间,防止暴涨。
# 临时设置binlog过期时间为24小时
mysql> set global binlog_expire_logs_seconds = 3600;

# 如果想要永久修改则需要修改配置文件 目录
vim /etc/my.cnf
添加 binlog_expire_logs_seconds=3600

后记

如果是大量数据MySQL显然不合适,这类数据一般为历史记录等不会修改只用做查询的数据,这种情况请使用时间序列数据库。