如何清理或调整 MySQL 中的 ibtmp1 文件?

How to clean or resize the ibtmp1 file in MySQL?

MySQL 5.7 引入了一个新文件 ibtmp1 用于在 InnoDB 中存储临时数据以提高性能。

但我注意到它的大小不断增加。在我的数据库服务器上,它的大小增加到 92GB。

有没有什么方法可以在不重新启动服务器的情况下减小文件大小或删除文件

谢谢

ibtmp1一旦创建就无法在不重启mysql服务的情况下通过任何方法收缩。

有两种处理方式:

注意事项 : 在服务器启动时你应该限制这个文件的大小为:

 innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G

其中最大 5G 表示此文件大小限制为 5GB。

Cure : 如果文件已经创建你需要重启服务:

SET GLOBAL innodb_fast_shutdown = 0;
Shutdown MySQL
remove ibtmp1
start MySQL.

文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-temporary-tablespace.html

在 mysql 5.7 及更高版本中,您需要做的就是回收 ibtmp1 文件使用的 space 重新启动服务.

不必设置GLOBAL innodb_fast_shutdown = 0;或手动删除文件。

要解决此问题,只需执行以下步骤:

1- 运行 这个命令:
sudo nano /etc/mysql/my.cnf

2- 在 [mysqld] 行下添加以下行
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G

3- 保存文件。

4- 现在我们需要释放一些磁盘 space 并删除 ibtmp1,我们可以通过重新启动 SQL 服务器来完成:

sudo service mysql restart