ticdc 同步单表事务是否可以分批执行?

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
生产

【概述】 场景 + 问题概述

【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】

【应用软件及版本】

【附件】 相关日志及配置信息

  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息

监控(https://metricstool.pingcap.com/)

  • TiDB-Overview Grafana监控
  • TiDB Grafana 监控
  • TiKV Grafana 监控
  • PD Grafana 监控
  • 对应模块日志(包含问题前后 1 小时日志)

tidb同步至tidb

同步延迟高,发现是单表进行了大量的update,delete. 同步无法在多个capture执行


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

3 个赞

@来了老弟

3 个赞

不可以, TiCDC 以 Table 为基本调度单位,也就是说一张 Table 的流量不会被拆散到不同的 TiCDC 节点上。

猜测是延迟是因为 TiCDC 内部排序慢了

3 个赞

如何缓解

3 个赞

估计日志中有很多这种报错吧
[“execute DMLs with error, retry later”] [error="[CDC:ErrMySQLTxnError]Error 1213: Deadlock foun
,update,delete过多可能导致很多死锁产生,重试次数多,如果safe-mode改为false可能会好,文档给的是该参数不能改,不知道官方有没有什么办法改

2 个赞

后续是否可以支持类似drainer的模式,并发执行,只需要保证表数据准备就可以

2 个赞

改小 worker count 改大 batch 试试呢,看帖子没有版本,TiCDC 同步的吞吐能力这块也在持续优化中。

2 个赞

好吧。了解

2 个赞

我们这边是加了主键之后 有了一些改善。

2 个赞

如果业务容许的话,可以拆分成更小一点的多个事务。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。