事故描述:
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的历史数据库。