mysql5.7 ibtmp1文件过大

服务器上的磁盘被占满,通过一下命令查找服务器上的大文件:

1
$ sudo find / -type f -size +800M  -print0 | xargs -0 du -h | sort -nr

经过排查后发现,/var/lib/mysql目录下面有一个ibtmp1的文件特别大,有64G 。

ibtmp1是个什么东西呢?查看官方文档后发现这是非压缩的innodb临时表的独立表空间。通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在支持大文件的系统这个文件大小是可以无限增长的。

解决办法:

  • 修改my.cnf配置文件:
1
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
  • 设置innodb_fast_shutdown参数
1
SET GLOBAL innodb_fast_shutdown = 0;  #InnoDB does a slow shutdown, a full purge and a change buffer merge before shutting down
  • 关闭mysql服务
1
systemctl stop mysqld.service
  • 删除ibtmp1文件

  • 启动mysql服务

1
systemctl start mysqld.service