背景:正式环境磁盘满了,排查后发现是mysql中data目录下的ibtmp1文件增长超过1TB,网上查,发现ibtmp1文件是InnoDB存储引擎的临时表空间文件。用于存储临时表、排序等操作的临时数据文件。
解决方法:1.重启mysql实例释放ibtmp1文件;2.限制ibtmp1文件大小:innodb_temp_data_file _path = ibtmp1:12M:autoextend:max:5G
操作示例:
1. 重启mysql实例释放ibtmp1文件
1.1 重启mysql服务(建议先备份,由于我的文件1TB太大了所以没备份)
1.2 重启后发现确实小了,有用
2.限制ibtmp1文件大小
2.1 找到my.ini文件,添加以下代码(默认初始大小12M,设置最大增长5G),建议先备份:
innodb_temp_data_file _path = ibtmp1:12M:autoextend:max:5G
Tips:一切正常后就结束了,后面是操作时遇到的异常,发出来供参考
2.2 遇到的异常1:保存后重启服务,出现以下提示,还原代码后再重启也是一样(当时忘记备份,只是代码还原),找了很多方案,差点重装mysql,后发现是这个原因:
用文本文档打开后保存会自动编码UTF-8,后再保存一次编码选择ANS再重启服务就可以正常了。
2.3 遇到的问题2:上面的操作改了my.ini文件重启服务后一直显示启动中,后还原my.ini文件想重启,MySQL服务处的启动按钮是灰的不能操作,需强制停止进程:
-
- 以管理员身份打开命令行窗口
- 查找mysql残留进程:tasklist | findstr "mysql"
- 将进程全部杀死:taskkill/f /t /im mysqld.exe
- 杀死后启动按钮就变正常可操作了(如不能再查残留直到杀死所有进程为止)
2.4 参考链接:https://zhuanlan.zhihu.com/p/499521079
标签:文件,数据库,ibtmp1,备份,mysql,5G,重启,MySql From: https://www.cnblogs.com/YourAnnie/p/18231477