Tidb cdc 单表任务,没有更新到rowchange事件

  • 【TiDB 版本】:4.0
  • 【问题描述】:Tidb cdc 配置了单表任务,修改单表,但是kafka没有消费到rowChange事件,并且一直有EventResolve 事件推送。

cdc.log (9.6 MB) cdc_stderr.log (25.0 KB) cdctask.txt (1.9 KB)

sorry,
辛苦检查下 ticdc 与 kafka 和 tidb 集群的网络情况,
rpc error: code = Unavailable desc = etcdserver: request timed out"}

1:这个问题是cdc任务,pd地址配置错误
2:当修改为正确的地址后,rowchange事件还是没有收到,cdc的log报了一个warn,error日志里没有打印信息
cdc.log (9.7 MB) cdc_stderr.log (28.6 KB)

你好,
上游 tidb 版本为 4.0.0?
ticdc 版本 v4.0.7

当前服务器配置如何? tidb 集群和 ticdc 执行服务器的配置都辛苦简述下

请检查下 pd-server 的状态, 看下是否有重启?
dmesg -T |grep pd-server

[2020/10/26 15:31:19.985 +08:00] [ERROR] [client.go:284] ["[pd] getTS error"] [error="[PD:client:ErrClientGetTSO]rpc error: code = Unknown desc = [PD:tso:ErrGenerateTimestamp]generate timestamp failed, timestamp in memory isn’t initialized"]

[2020/10/26 15:31:21.984 +08:00] [ERROR] [client.go:284] ["[pd] getTS error"] [error="[PD:client:ErrClientGetTSO]rpc error: code = Unknown desc = [PD:tso:ErrGenerateTimestamp]generate timestamp failed, timestamp in memory isn’t initialized"]

cdc3

感谢专业的反馈
请问,这个是全部内容了吗?
辛苦提供下 ticdc 的 create changefeed 的命令

是的,全部的内容

![cdc5|690x366]

cdc6
我目前同步的是单表,我刚才又试了一下,发现是部分的单表的部分rowchange事件丢失,有时候能收到rowChange事件,请看截图
还有就是rowchange事件没有所有列的值吗。怎么就告诉了我一个id=5的值

首先关于只收到部分列值的问题:cdc对于delete 事件的默认行为是 只输出 delete 事件的主键或唯一索引列,如果想输出全部列,请在changefeed 配置文件中添加 enable-old-value=true

关于row event 没有输出的问题:你可以观察一下 收到的resolved event 中的ts 是否有推进,如果没推进的话,证明 cdc 仍然在初始化阶段,这个阶段是不会有 row event 输出的。

我这边是update事件,不是delete,我是改了一个列的值,没有删除

有推进,一直有收到event change事件

resolved event 事件中的 resolvedts 在增长吗

是的,在增长

从这张图上看,update or delete 为 “d” 哈

那就更奇怪了,我是update事件,怎么拿到的是delete事件…


这条数据还在的,我只是改了个时间

请问咱们部署监控了吗,方便提供一下没有 row change event 这个时间段的监控吗

时间是唯一索引吗,对于改数据的情况,如果修改的列值是唯一索引,cdc会将这update 事件拆成delete+update 事件(仅有当 enable old value = false 时有这样的行为)

开了old value 后是不会拆的


这个是我刚起的任务,对应的上条记录

麻烦执行 cdc cli changefeed list --pd=xx 贴一下结果

这个时间没有任何索引,只是普通列,我目前是是mysql操作的, dm同步,然后cdc在消费,流程是这样的