TiCDC同步DDL语句问题

【 TiDB 使用环境】生产环境
【 TiDB 版本】 V6.1.0
【复现路径】使用ticdc同步数据至mysql
【遇到的问题:问题现象及影响】
tidb表新增索引,但是mysql新增索引语句被多次执行,将参数 sync-ddl 调为 false 依然会同步ddl语句
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
mysql执行新增索引的语句


ticdc配置:
image

多次执行是有可能的,参考https://docs.pingcap.com/zh/tidb/stable/ticdc-overview#数据同步顺序性
你只需要保证第一个ddl 正确执行,后续该add index ddl 会因为索引名字一样自动报错,cdc识别到是因为索引重复报错会继续同步后续数据

看现在的情况是因为下游MySQL执行ddl被阻塞而导致cdc内部线程 超时重试,处理方法建议解决下游ddl阻塞的问题,或者换个手段,暂停cdc同步,手工创建下游index,然后再开启同步,这样就过去了

那上面的加索引的操作是因为一直没有一条成功,所以一直无法报错,导致上游的cdc一直无法识别到错误,无法继续往后同步后续数据?还有一个问题这个sync-ddl设置为false是否真正有用,之前我们也出现过sync-ddl设置为false,但是ddl还是被采集了

应该是并行,而不是多次执行

不是并行,有先后顺序的


执行完是这样的,因为mysql加索引,如果表大一些的话,是比较耗时间的,希望不同步ddl语句,但是sync-ddl貌似没啥用

1、cdc不是无法识别错误,当出现上面情况时,mysql会因为元数据锁等待而卡住,而cdc内部线程会超时
2、sync-ddl设置为false,但是ddl还是被采集了,请把changefeed配置文件发出出来看下,正常来说是生效的

1 个赞

不是并行,串行的

这个是执行时间长,卡住了,时间太长就会导致cdc断开,你最好现在mysql上建上索引,然后再tidb建索引,mysql会跳过这个ddl,直接同步后面的