`

mysql 表满了 “the table XXX is full ”的问题

 
阅读更多

      趁时间还有一些,再撸一篇,这问题是今天遇到的,在此先感谢运维的童鞋尴尬

 

     【背景】

      早上需要给某张大表增加一列

alter table A add column XXX tinyint default 0 comment '是否深度识别 0否 1是';

      A 表当时数据行数千万数量级,当流量处于低峰时,进行上面sql,执行了大概5分钟后,报“the table XXX is  full” 问题

 

    【问题定位】

     当时先在网上查找了一下,有设置最大行数的,查看配置已经很大了,足以满足当下的增长需求;有清理目录的,但没有给出具体的目录,这时候求助运维同学,解释如下:在执行alter 操作的时候,会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行alter table时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上,但是rename操作不会创建临时表。通过了解原理,再结合”执行5分钟后,报错“的现象,考虑是因为创建临时表导致磁盘空间不够,导致执行语句失败

 

   【解决方案】

     1.删除目录下的无用文件

     2.将临时表目录指到一个大的磁盘目录上 (但是需要重启)

   

   【结束语】

     mysql 并没有像oracle 那样强悍,有些东西需要提前准备

    

1
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics