7.5.1 ticdc 问题

背景:
我们准备采用带有回滚方案的原地升级形式进行 TiDB 升级,从 6.5.9 升级至 7.5.1 时发现,升级前源端目标端的数据是追平的,但在升级后的一个 TiCDC 任务延时越来越大,该 TiCDC 任务同步一个分区表大概有 40 个左右的分区,升级前该任务没有延时,升级后延时变大

调整过如下参数(未果):

worker-num 调大
worker-count 调大
per-table-memory-quota 调大
cache-prep-stmts false

同时还发现下游的计算节点压力比较大,也对下游计算节点增加(源端 tidb x 4 ,目标端 tidb x 13),也没有解决

监控中发现,update 和 delete 在目标端没有变化,但 insert 语句貌似转换成了 replace,和社区支持老师沟通后得知 ticdc 在 6.1.3 版本以后 ticdc 会自动判断下游是否有重复数据,如果有则会导致 insert 变为 replace,这有可能会导致性能下降

想请教下如下两个问题:

  1. 同步任务是在 6.5.9 后创建的,如果 ticdc 对 SQL 的行为一直的话,为什么升级前没有变成 replace 升级后变成了 replace
  2. 如果问题是 replace 拖慢了速度,如何对 ticdc 调整可以降低延时

现在有个行为是:在同步到 “创建任务或者重启任务” 这个时间点之前一直都是safe-mode 呀,safe-mode 就会把update 拆成delete 和 replace 所以等等吧。后续这个行为会优化。