记一次磁盘爆满清理记录
前言
服务器磁盘爆满,经验有限想要排查一下是哪个服务占用了磁盘。只能一步一步排查目录,顺着目录大小进行排查。
相关环境:Centos7 MySql8
排查
- 使用命令
df -h可以看到当前磁盘使用情况
- 进入爆满的磁盘使用命令
du -sh * | sort -n按照目录递归遍历目录下所有文件大小进行排序
最后定位到MySql的data文件夹/var/lib/mysql中binglog文件过大
解决
- MySql的
binglog记录所有的数据库操作,默认情况下过期时间为0也就是说永远不过期。由于MySql记录了TCP的上下线记录,这个上下线记录很庞大,日积月累产生了大量binglog文件。 - 进入MySQL通过命令
show variables like '%expire%%';查看binglog的过期时间设置。
注意: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显然不合适,这类数据一般为历史记录等不会修改只用做查询的数据,这种情况请使用时间序列数据库。