MySQL · 故障处理 · ibtmp1 文件过大

问题描述

ibtmp1 文件过大,大小 142G,磁盘即将占满

1
2
3
4
5
-rw-r----- 1 mysql mysql 5.4M Aug 19  2019 ib_buffer_pool
-rw-r----- 1 mysql mysql 1.0G Aug 5 14:32 ibdata1
-rw-r----- 1 mysql mysql 1.0G Aug 5 14:32 ib_logfile0
-rw-r----- 1 mysql mysql 1.0G Aug 5 14:32 ib_logfile1
-rw-r----- 1 mysql mysql 142G Aug 5 14:05 ibtmp1

原因分析

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;
  • 关闭 mysql 服务

  • 删除 ibtmp1 文件(重启自动删除)

  • 启动 mysql 服务

注意:为了避免以后再出现类似的情况,一定要在限制临时表空间的最大值,如 innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G