使用场景:

秒级数据同步要求的双活数据中心场景,通过数据库同步工具DTS实时将RDS的数据实时同步至自建MySQL数据库

故障现象:

DTS报同步失败错误,详情如下:

DTS-071007: Schema matched failed. cause by [Can not find column HHHH<-->HHHH[true] in target table yunxiaobiao.15092417115] About more information in [https://yq.aliyun.com/articles/499602].

排查经过:

首先,根据报错提示,登录https://yq.aliyun.com/articles/499602 查看报错原因及解决方案

  报错原因:DTS在基于源表的列一一匹配目标表的对应列时出错,出错的基本原因是该表的某一个列在目标表中不存在,即该表的表结构在源库和目标库中不一致.比如只在目标库加减列。
  解决方案:用户可在目标表中手动创建该不存在的列(注意库表列映射),成功之后点击重新启动即可恢复。

接下来,对比源库和目标库表结构,果然,发现源库比目标库多了5列。

联系开发负责人确认,得到的反馈是,用DDL语句在源库增加过5列,未对目标库做任何操作。排除修改目标库表结构导致DTS任务失败的可能。

接着,尝试通过在目标库增加相应列来解决该故障,但在目标库增加列时,又有报错

  1034 - Incorrect key file for table 'yunxiaobing'; try to repair it

找度娘咨询了下,可能是tmp目录空间不足导致,经落实,果不其然,增加列时会产生20G的临时表,而tmp总空间才16G。

问题基本定位,调整MySQL tmpdir目录位置,重启目标库后添加列,重启DTS链路,故障解决。