为什么TiCDC选择同样的startTs,推送的增量扫数据是不一致的

【 TiDB 使用环境】Poc
【 TiDB 版本】5.4.3
【复现路径】我使用tikv client java 对pd发送startTs相同的cdc请求后,每次推送的增量扫数据都有不一致的
【遇到的问题:问题现象及影响】
我使用tikv client java 对pd发送startTs相同的cdc请求后,每次推送的增量扫数据都有不一致的,cdc在内存范围内
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

你手动cdc推送看看数据增量是否一致呢

前后不同操作、数据在同步期间要保证GC没有触发,否则会有数据被清理。

排查问题的时候建议优先关注GC的情况,可以调整集群的GC时间,让数据保留时长足够久,然后再验证看看。

关注GC Life Time

我积压了100w的变更事件后停止了所有的变更,然后设置相同的startTs去获取cdc事件,发现推送的数据大部分是一致的,有少部分不一致。然后我再去消费这些数据后就导致数据不一致了

tikv-client-java支持调整gc时间吗?还是说在部署的时候需要调整一下gc时间。

据我所知,tikv默认保存在内存中的cdc事件大小为512MB,我积压的数据没有超过512MB,但他还是不一致。这个是因为中间发生了gc吗?如果发生gc的话,那么增量扫的数据不就会存在很大的不一致了吗?

非常感谢大佬的指导

你遇到的情况也不一定是GC导致的,我只是提供了一个排查思路,可以先确认是不是它的问题。

GC 一般是通过时间来控制的,不是通过数据大小。

根据经验,TiCDC 比较多的问题会和 GC safepoint 有关,具体可以到官网了解一下。
https://docs.pingcap.com/zh/tidb/stable/ticdc-faq#ticdc-常见问题解答

好的,再次感谢大佬的指导,我先尝试调整gc时间,再多做几个测试看看

感觉不太可能是gc的问题,原因如下:
我使用tikv client java 向 pd 发送 startTs 时间的cdc请求。
我实际的变更有handle 1,2,3,4的数据
第一次请求推送过来的增量扫数据有:
handle:1
handle:2
handle:4
第二次请求推送过来的增量扫数据有:
handle:1
handle:3
handle:4
如上例子所示,每次推送的增量扫数据都会丢失一些数据。如果是gc掉了,第二次就不应该又推送过来。
小白虚心求教,这种情况是bug还是?需要怎么排查?
非常感谢各位大佬的指导!