今天mysql报错 The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statement

小编特此记录一下问题。

当mysql出现这个报错时,是因为mysql的存储空间爆满了。

 此时我们要进行排查,排查的方向:

1.数据

2.mysql的备份

3.日志

小编这里数据正常,备份正常,日志也正常,3个加起来还不到100G(小编的存储300G),然后小编查看了MySQL的系统文件,

命令:SELECT file_name,CONCAT(TOTAL_EXTENTS,'MB') AS 'FileSize' FROM INFORMATION_SCHEMA.FILES ORDER BY TOTAL_EXTENTS DESC LIMIT 20;

原来是系统文件过大,但是小编好像没有进行过任何操作,为什么会爆满呢?

ibtmp系统文件过大有一下几个原因:

ibtmp1增长主要与SQL有关,尤其是大量的分组聚合,排序,join查询SQL.通常如下情况会造成iptmp1上涨:

1.查询语句会先查询temp_table_size(内存分配)的量,当临时存储的量超过这个参数限制时,就会在iptmp1中申请占用空间。

2.select order group by GROUP BY 无索引字段或group by + order by 的子句字段不一样时。 3.select (select) 子查询

4.insert into select ... from ... 表数据复制

5.select union select 联合语句

 上面的5个原因会导致iptmp1文件一直增加,直到爆满你的存储空间。

你以为找到问题就解决了吗?

还有更恶心的,这个文件只能重启mysql才能释放,因为这是系统文件,根本找不到,确实恶心。而且用了空间竟然不会自动释放,这就很令人作呕。

ok,原因找到了,那就解决吧!

解决方法:

1.扩容存储空间

2.删除一些数据或者备份或者日志(小编不建议这样弄,有风险)

3.如果是ibtmp1文件的原因就重启mysql释放文件

以上是小编遇到的情况,可能和各位遇到的有所不同,请不要吐槽,报错原因千千万,各有各的情况。

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐