【 TiDB 使用环境`】生产
【 TiDB 版本】5.1.4
【遇到的问题】
ticdc同步任务tso不变,一共6个cdc任务,3个实时同步,3个延迟,tso一直不变。
{
“id”: “6f1ad1ff-c230-4cb1-a44b-c542dcdd1a20”,
“summary”: {
“state”: “normal”,
“tso”: 434351548455452762,
“checkpoint”: “2022-07-04 15:27:44.213”,
“error”: null
}
}
状态看着也是正常的
现象就是cdc有6个任务,3个一直实时更新,tso一直有变化,另三个任务的tso一直没变化,下游是同一套kafka,只是topic不同,tidb里的数据也是一直写入的。任务之间会相互影响吗?比如一个任务tso不变,会影响其他的同步任务?
而且将tso不变的三个任务删除一个,新建一个任务也是不行(无论指定不指定–start-ts)。目前是将三个任务全部删除,新建任务可以。
cdc_stderr.log里的信息如下:
{“level”:“warn”,“ts”:“2022-07-04T20:11:29.415+0800”,“caller”:“clientv3/retry_interceptor.go:62”,“msg”:“retrying of unary invoker failed”,“target”:“endpoint://client-49583f76-bc68-4c7e-a0f6-c2b3c34335f2/10.108.182.133:3379”,“attempt”:0,“error”:“rpc error: code = DeadlineExceeded desc = context deadline exceeded”}
现在有一点不太明白,按理说3个任务还是正常的,说明cdc本身应该没问题,有问题的三个任务,逐个删除重建应该就可以了,但实际情况是,3个任务必须全停,然后全删除后,重建任务才正常。
同步任务 tso 中断可以排查一下是否是这个问题: https://github.com/pingcap/tiflow/issues/4516#issuecomment-1049540773
tikv 残留锁,查看 metrics cdc -> tikv min resolved ts
今日有出现了3个任务正常,3个任务突然tso就不再变化,导致延迟了,询问业务得知,是tidb有带有大字段的任务在跑,将任务停掉后,tso开始变化,延迟慢慢追上了。
所以有个疑问,面对这种可能会有大字段的同步,cdc是如何处理的。
可以把脱敏后的带 blob 字段的测试数据发一下吗?我们这边复现一下
现在同步带 blob 字段的表还会有问题吗,这个问题是否可以稳定复现?看上面的报错信息,是 TiCDC 到 PD 取 tso 出的问题
能稳定复现,开发那边只要加上这个json串的字段,对应cdc任务的tso就不变了。
小王同学Plus
(小王同学 Plus)
13
稳定复现具体步骤能描述下吗 ? 或者提供下复现方法。我们看一下。
就是一旦遇到涉及这个表的刷数,比如大量的update、delete,cdc就会不同步了,平时不刷数的时候,这个字段还是可以同步过去的,是需要调整cdc的什么参数?