目的

写文章的目的只是为了记录一下工作中遇到的一些实际问题,方便后续自己的复习。

问题描述

收到来自于开发的一个问题描述,说是在UAT环境给一张表加一个字段,但是怎么操作都是错误,如图:
【20190404】MySQL疑难杂症-1034

问题解析

其实第一眼看上去的时候,这个错误信息给我的感觉就是这个表的数据字典出了问题,需要进行修复,但是执行下面操作的时候一直是提示是失败,这个时候就需要求助强大的google的了,通过google了一番的话,大部分提示都是和临时表的表空间有关联。
【20190404】MySQL疑难杂症-1034

【20190404】MySQL疑难杂症-1034

【20190404】MySQL疑难杂症-1034

通过上面的截图我们可以很明显的看到这张表的磁盘大小是5G以上,由于是online 添加字段所以肯定是会创建临时表的,但是临时表是在根目录下面的 /tmp下面,可以看到根目录剩下的空间只有2.9G,没有足够的空间创建临时表的 。所以才会抛出上述的这个错误信息。

问题解决

  1. 将根目录下面的一些磁盘空间清楚,保证有足够的空间在线执行online DDL,建议最好是线下无业务的时候执行,不推荐这种方式在数据量比较大的时候。
  2. 使用percona的pt-online-schema-change命令。