cdc tso不推进(有部分表卡住)

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】V7.1.1
【复现路径】
建了一个比较大的组合索引(表数量大概4个亿),导致cdc卡主,报错 [CDC:ErrPDEtcdAPIError]etcd api call error: context deadline exceed, 暂停changefeed, 索引建好后尝试恢复。
恢复cdc后,发现kafka开始有数据生成, 但是changefeed的tso不推进,通过kafka中的消息发现有些表已经推送到最新的消息,但是有些的增量卡住出不来(这个应该tso不推进的原因),但是在错误日志看不到特别的错误信息(有一些错误信息,平时也有,比如: fail to load safepoint from pd / requeested pd is not leader of cluster等)
【遇到的问题:问题现象及影响】
以上有两个问题:

  1. 建索引导致cdc卡住的问题
  2. changefeed恢复之后,因为部分表导致整个tso无法推进问题, 看不到原因
    基本上上了一定量之后,只能中断很短的时间,时间稍微一长,基本上就没法恢复了,只能重建cdc,丢数据

【资源配置】
pd / tidb-server/ cdc 混合部署*3, 服务器资源 内存256G/48c/ssd 硬件资源没有问题,tikv独立部署
出问题时cdc的相关监控有较大波动部分

混合部署比较容易出现资源抢占,
比较建议

pd+ tidb 可以放一起

但是 ticdc 还是需要单独部署。

排查思路:

  1. 检查TiCDC的日志:查看TiCDC的日志,特别是在出现问题的时间点附近的日志。检查是否有与索引建立相关的错误或异常信息。您可以使用命令tail -n 1000 <cdc_log_file>来查看最近的日志。
  2. 检查CDC的监控指标:使用TiCDC的监控指标来检查其运行状态。特别关注CDC的延迟、同步速度、错误计数等指标。您可以使用Prometheus或Grafana等工具来查看这些指标。
  3. 检查TiCDC的配置:检查TiCDC的配置文件,确保配置参数的设置合理。特别关注与性能相关的参数,例如ticdc.changefeed.max-resolved-ts-leaseticdc.changefeed.sync-dml-interval等。您可以参考TiCDC的官方文档[1]了解这些参数的含义和推荐值。
  4. 检查TiCDC的版本:确保您使用的是最新版本的TiCDC。新版本通常会修复一些已知的问题和性能改进。
  5. 检查TiKV的状态:使用TiUP或PD-CTL工具检查TiKV集群的状态,确保集群中的所有节点都正常运行,并且没有异常的Region分布或Leader分布。您可以使用命令tiup ctl:v5.1.1 pd -u <pd_address> storetiup ctl:v5.1.1 pd -u <pd_address> region来查看TiKV集群的状态信息。
  6. 检查TiKV的监控指标:使用TiKV的监控指标来检查其运行状态。特别关注TiKV的CPU使用率、内存使用率、磁盘IO等指标。您可以使用Prometheus或Grafana等工具来查看这些指标。

穷日子 混在一起了

资源抢占造成的

查下 cdc tso 相关的指标,帖子目前的图没办法判断

索引不会导致cdc 卡主的,数据回填会额外占用 IO,除非 物理IO不足,就会类似 卡主的情况
特别是大表,数据量大的情况,表结构变动之后,需要重新填数据…

看一下硬件资源使用率 top一下观察耗资源的时什么

帮忙提供一下CDC独立部署的推荐配置呢

每一个实例都用单独的资源配置。
不要混合部署。

tidb版本升级到v7.1.3, cdc组件由原来的和tidb&pd混合部署调整为独立部署,基本上没问题了