如何在 MySQL 中清理或调整 ibtmp1 文件的大小?
Posted
技术标签:
【中文标题】如何在 MySQL 中清理或调整 ibtmp1 文件的大小?【英文标题】:How to clean or resize the ibtmp1 file in MySQL? 【发布时间】:2017-05-04 03:40:21 【问题描述】:mysql 5.7 引入了一个新文件 ibtmp1 用于在 InnoDB 中存储临时数据以提高性能。
但我注意到它的大小不断增加。在我的数据库服务器上,它的大小增加到 92GB。
有什么方法可以减小文件大小或删除文件无需重新启动服务器?
谢谢
【问题讨论】:
可能有用:dba.stackexchange.com/questions/136627/… @TimBiegeleisen 这个解决方案需要重启,我无法承受停机时间。 @TimBiegeleisen 我正在寻找一种无需重启服务即可解决此问题的解决方案,因为在我的情况下,此文件的增长速度非常快.. 我赞成你的问题,这是我目前所能做的。我希望你能得到答案。 @TimBiegeleisen ,没问题...谢谢 【参考方案1】:ibtmp1一旦创建完成,在不重启mysql服务的情况下,无法通过任何方法收缩。
有两种处理方式:
注意事项:在服务器启动时,你应该限制这个文件的大小:
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
其中 max 5G 表示此文件大小限制为 5GB。
治愈:如果文件已经创建,您需要重新启动服务:
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
【讨论】:
运行 AWS RDS MySQL 5.7,“故障转移重启”足以截断此文件。 这个问题是针对原生 mysql 而不是云。 迷你教程:编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
。添加为最后一行:innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
(或 xG)。重启Mysql:sudo service mysql restart
---查看/var/lib/mysql/ibtmp1
处的文件大小。
我发现没有必要删除ibtmp1,当我重新启动mysql服务时,文件被调整了大小。 14.14 版
@JonHulka 问题是如果无法重新启动如何删除 - 所以预防胜于治疗..【参考方案2】:
在 mysql 5.7 及更高版本中,回收 ibtmp1 文件使用的空间所需要做的就是重新启动服务。
您不必设置 GLOBAL innodb_fast_shutdown = 0; 或手动删除文件。
【讨论】:
【参考方案3】:要解决这个问题,只需执行以下步骤:
1- 运行此命令:sudo nano /etc/mysql/my.cnf
2- 在 [mysqld] 行下添加以下行 innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
3- 保存文件。
4- 现在我们需要释放一些磁盘空间并删除 ibtmp1,我们可以通过重新启动 SQL 服务器来做到这一点:
sudo service mysql restart
【讨论】:
以上是关于如何在 MySQL 中清理或调整 ibtmp1 文件的大小?的主要内容,如果未能解决你的问题,请参考以下文章