【 TiDB 使用环境】生产环境
【 TiDB 版本】 V6.1.0
【复现路径】使用ticdc同步数据至mysql
【遇到的问题:问题现象及影响】
tidb表新增索引,但是mysql新增索引语句被多次执行,将参数 sync-ddl 调为 false 依然会同步ddl语句
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
mysql执行新增索引的语句
ticdc配置:
【 TiDB 使用环境】生产环境
【 TiDB 版本】 V6.1.0
【复现路径】使用ticdc同步数据至mysql
【遇到的问题:问题现象及影响】
tidb表新增索引,但是mysql新增索引语句被多次执行,将参数 sync-ddl 调为 false 依然会同步ddl语句
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
mysql执行新增索引的语句
多次执行是有可能的,参考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还是被采集了
应该是并行,而不是多次执行
不是并行,有先后顺序的
1、cdc不是无法识别错误,当出现上面情况时,mysql会因为元数据锁等待而卡住,而cdc内部线程会超时
2、sync-ddl设置为false,但是ddl还是被采集了,请把changefeed配置文件发出出来看下,正常来说是生效的
不是并行,串行的
这个是执行时间长,卡住了,时间太长就会导致cdc断开,你最好现在mysql上建上索引,然后再tidb建索引,mysql会跳过这个ddl,直接同步后面的