今天mysql报错 The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statement
小编特此记录一下问题。
当mysql出现这个报错时,是因为mysql的存储空间爆满了。
此时我们要进行排查,排查的方向:
数据
mysql的备份
日志
小编这里数据正常,备份正常,日志也正常,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,原因找到了,那就解决吧!
解决方法:
扩容存储空间
删除一些数据或者备份或者日志(小编不建议这样弄,有风险)
如果是ibtmp1文件的原因就重启mysql释放文件
以上是小编遇到的情况,可能和各位遇到的有所不同,请不要吐槽,报错原因千千万,各有各的情况。
来源地址:https://blog.csdn.net/qq_42500588/article/details/126420879