cdc changefeeds 任务如何均衡分发到4个实例

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v6.1.0
【复现路径】

1、ticdc任务原有cdc实例 xxx.xxx1:8300,xxx.xxx2:8300, changefeeds任务有22个
2、新加了cdc实例 xxx.xxx1:8310,xxx.xxx2:8310 ,但是changefeeds的表没有分配到实例上,重启cdc后,会分发到新的cdc-8310 端口的2个实例
3、如何把changefeeds任务 分发到4个cdc实例上

【资源配置】
【附件:截图/日志/监控】

1668655927609

1)目前cdc任务还不能自动均衡调度,如果要均衡,记得需要手工处理
2)cdc的任务分发,不是以任务各多少,底层是按照所有的table来来路由

可以看看这个
https://github.com/pingcap/tiflow/blob/master/docs/design/2020-03-04-ticdc-design-and-architecture-cn.md

底层是按照table来路由,是新建任务后,就已经固定了嘛
为啥8300端口的cdc实例一个任务都分配呢

是固定的,除非capture(cdc-server)挂掉了,才会以table为单位均衡到剩余的cdc-server上

cdc process 实例多少对抽取有什么影响,例如cdc实例2个和8个实例同步cdc任务有什么区别

changefeed 要同步的表会以 table 数量为单位分配到不同的 capture 上进行同步。

对于你遇到的问题,麻烦你执行一下 ./cdc version 命令获取 cdc 的版本信息,然后粘贴上来帮助我们排查。
按理来说 cdc 应该会自动对表进行负载均衡,如果它没有自动负载均衡,

  1. 可以通过 openAPI 来主动让它进行调度,参考:https://docs.pingcap.com/zh/tidb/dev/ticdc-open-api#手动触发表的负载均衡
  2. 如果以上方法不管用,可以考虑暂停并重启 changefeed。
  3. 如果上述两个方法都没有用,最后考虑重启 cdc owner 节点刷新所有状态。
1 个赞

早就重启cdc任务,就是分配不均衡
image
也通过命令调整过cdc任务,重启后就又不均衡了

调度不均衡的问题在 v6.2.0 版本之后已有优化,能自动平衡各个 TiCDC 节点上的表个数。之前的版本需要使用 API 来手动触发平衡调度,方法见 asddongmen 的回答。

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