接到了一台 MySQL5.7服务器磁盘空间不足的报警。
经过排查后发现,数据目录下面有一个ibtmp1的文件特别大,有35G ,占用了约80%的空间。
$ du -sh ibtmp1
35G ibtmp1
ibtmp1是个什么东西呢?查看官方文档后发现这是非压缩的innodb临时表的独立表空间。通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在支持大文件的系统这个文件大小是可以无限增长的。
解决办法:
1、修改my.cnf配置文件,在mysqld配置下添加:
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
2、重启mysql服务。
问题即解决。
为了避免以后再出现类似的情况,一定要在限制临时表空间的最大值,如innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G。