Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  • 加入社区3,280天
  • 写了1,496,113字

该文章投稿至Nemo社区   数据库  板块 复制链接


mysql5.7 ibtmp1文件过大

发布于 2018/12/03 21:12 18,792浏览 0回复 1,266

最近LinkNemo迁移到新的程序,新的环境上,服务不是很稳定,配置还有待调优。

上午发现了一个问题:

磁盘使用达到100%:

$ df -h 

Filesystem      Size  Used Avail Use% Mounted on
udev            479M     0  479M   0% /dev
tmpfs           100M  6.4M   93M   7% /run
/dev/vda1        40G   38G     0 100% /
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           497M     0  497M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/0

所以后台一直有一些异常抛出。

需要找到占用空间比较大的文件:

这里找出整个系统中文件大小大于100M的文件

$ find / -type f -size +100M
/var/lib/mysql/ibtmp1
...
...
/opt/jdk-8u191-linux-x64.tar.gz
/home/ss/old/default.zip
...

查看文件后发现,其中ibtmp1文件占用居然达到了24G。

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


重启mysql后发现,文件恢复到74M。


不能每次遇到这个问题都去手动重启mysql。

这里手动设置下这个文件的最大长度,用来做限制。

找到my.cof,在[mysqld]下添加:

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

设置max为5G,重启mysql后问题即可解决。

本文标签
 {{tag}}
点了个评