Mysql 单个ibd文件过大

2021/8/3 19:09:21

本文主要是介绍Mysql 单个ibd文件过大,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

事故描述:

6月1日,10点40分,出现general error: 1114 The table 'xxx' is full异常报错。

11:05定位问题,发现由于xxx表数据量过大,磁盘对应的ibd文件大小达到2T。

由于文件系统使用的是ext2格式(单个文件大小不能超过2T),所以导致该表对应的文件不能扩展,该表数据无法正常插入。

11:30开始删除该表历史数据,但删除速度赶不上插入速度。

13:10更换处理方式,创建临时表插入xxx最近数据,将原xxx rename为xxx_old,临时表调整为新xxx表。

13:40业务恢复正常.

 

事故原因

该表作为记录订单促销商品明细表,xxx字段保留json格式数据,导致磁盘大小增长过快。

xxx表磁盘文件达到文件系统单个文件大小最大值。

 

解决方案:

创建新表保留xxx近期数据,原表改为历史表xxx_old;

Create table xxx_tmp as selet * from xxx where id>48087708;

Alter table xxx rename to xxx_old;

Alter table xxx_tmp rename to xxx;

创建索引。

后期经业务确认删除xxx_old表,释放磁盘2T空间。

 

避免措施:

目前观察新xxx表磁盘大小日增长30G。为保证618期间数据库正常运行,定期删除xxx的历史数据库。



这篇关于Mysql 单个ibd文件过大的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程