今天在测试环境数据库插入数据时没响应,然后在测试环境服务器上也新建不了文件,直到在测试环境的数据库里建表时,报了一个这个错
错误信息:磁盘空间不足。
之后去服务器上 df -h 查看磁盘空间使用情况,
当时发现Use%已经到百分之百了,(这里是已经清理过后的)。
虽然是测试环境,但是服务器的东西也不太好删,于是去根目录
du -h --max-depth=1
查看每个目录下的大文件,发现了一个文件很大,有几十G
...-slow.log
这是mysql的一个记录慢查询的日志文件
可以在数据库里执行
show variables like '%slow_query_log%';
第一个参数的值是是否开启慢查询日志,
第二个是日志文件的地址
show variables like 'long_query_time%';
可以看到阈值是10秒,意味着超过10秒的语句会被记录到慢查询日志中
这里可以执行
show variables like ‘%log_output%’
命令查看日志的存储方式,FILE和TABLE两种,这里是file文件类型的,也可以是存储到数据库表中。
那么为什么慢日志会变得这么大呐
首先执行
show full processlist
查看正在执行的进程
可以发现最上面的两个查询语句一致在执行,导致涉及到上面两个语句的表一直被锁,继而阻塞同表后面的所有操作,因为被锁的表使用率也很高,导致后面的语句都会被记录进慢查询日志里,久而久之慢查询日志就变得很大,继而占满服务器的磁盘空间。
后续解决方法是杀掉那两条长时间的sql,关闭慢查询,同时删除慢查询日志即可。