【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.9
【复现路径】
tidb中原有几个同步数据量比较大的cdc任务,加了一个新的cdc任务(tidb–>tidb,数据量也比较大),会导致cdc任务全部卡住不动
【遇到的问题:问题现象及影响】
停止新的cdc任务后才恢复
cdc负载太高,我要怎么样新建cdc任务,才能不影响之前的cdc任务呢?大佬求解答
【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.9
【复现路径】
tidb中原有几个同步数据量比较大的cdc任务,加了一个新的cdc任务(tidb–>tidb,数据量也比较大),会导致cdc任务全部卡住不动
【遇到的问题:问题现象及影响】
cdc负载太高,我要怎么样新建cdc任务,才能不影响之前的cdc任务呢?大佬求解答
新增一台服务器,单独跑新增的可以吗?
增量跑完,再迁移到集中的服务器
横向扩容cdc节点呗
如果是压力大,可以扩容
不是压力大导致的夯住可以考虑升级下。我记得低版本有类似 new task 堵塞老 task 的 bug。
横向扩容cdc好像解决不了这个问题,现在的cdc没什么压力,但是新增任务的时候,全部都不动了,有些很小数据量传输的cdc任务也都卡住了,就怕扩容了cdc还会出现这个问题,这个是生产上的,不敢搞了
应该就是这个问题,升级是指升级tidb集群?还是单个cdc组件
一般推荐升级整个集群。但是我忘了问题 ISSUE 了,可能需要找一下。
或者是不是新任务有问题,同步的表和其他任务重叠了,导致夯住了
你看下 cdc 日志里面有没有 ERROR。
麻烦粘贴一下 TiCDC 的 dataflow 栏的监控,看看新老 changefeed 任务的 puller 是不是一直都有在持续拉数据;
然后看看每个 changefeed 的 resolvedTs 的指标的情况;
最后看看 cdc 监控下的 TiKV 那一栏下面的 CDC CPU 和 Initial scan tasks status 这两个指标。
现在的情况有可能是新的 changefeed 的增量扫数据太多,它把别的任务都饿死了,等到新建的任务增量扫结束其他任务就会推进了。
有没有可能跟我创建的时候用的都是同一个cdc节点的关系?我创建cdc的时候地址总是写同一个,我cdc有三个节点
我创建任务的语句:
tiup cdc cli changefeed create --server=http://172.22.152.185:8300 --config ticdc-tidb-03.toml --sink-uri=“mysql://root:xxx@xxx:4000” --changefeed-id=“upstream-to-downstream-tidb-03” --start-ts=453439300203970585
因为影响了线上业务,线上业务是通过cdc同步到es去查询的,最后暂停了这个cdc任务才恢复的,这个任务一直加不了,就是不知道怎么才能把这个影响给降低
现在滞后的数据量应该有快6天了,一天大概有1E多的数据
这个任务同步的表数量多吗?另外添加这个任务之后 cdc 服务器的 cpu 使用量是不是打满了。
现在先确认一下到底原因是什么。
如果真的是因为增量扫数量太多导致需要排队处理,那么无法避免延迟发生,只能说也许能够降低延迟的时间。
从你提供的 puller 监控来看,每秒钟能够拉取 10 万~ 30 万行的数据,按照这个值推算,最坏需要延迟 100 分钟,可以考虑是不是能够接受。有一些参数调整也许可以加速到只延迟 60分钟左右。(不一定有用)
如果无法接受,那么只能考虑放弃增量同步这部分数据了。
这个任务几个表呀,如果表多的话把这个任务拆分一下
我现在的想法就是,不增量了,直接从当前的数据开始同步,后面再补录缺失的数据
只有一个表的,数据量太大了这个表