unsupported type 来自于打 log 时,某一个对象存在一个 callback,zap 无法识别 callback 导致,和卡住问题应该是没有关系。
这一段代码的是更新 brokers 的信息,主要目的是用于更新 metrics,因为 cdc 会记录发送到每一台 broker 的流量等监控信息,获取频率是 5s 一次。
TiCDC 需要降低周期性访问 kafka cluster 获取 metadata 的频率。 比如 10 或者 30 分钟,才更新一次 brokers 的信息。
如果 kafka 集群的拓扑不发生变化,那么可以在启动的时候只获取一次,如果会发生变化,那么可能就需要周期性再去访问。
这个也不是导致进程退出的根本原因。
要找到 region feed stopped 的原因。
从提供的材料来看,不知道 owner 切换的原因。可以查看切换之前的 cdc owner 节点的日志,看看是因为什么原因导致它从 owner 上退下来。
新的 owner 在 2022/11/20 12:32:11.153 +00:00 当选。可以看看老的 owner,在这之前 2 分钟左右的日志,或者搜索 [ERROR] 或者 [WARN] 级别的日志。
leader 变化和 owner 变更之间的时间差了 1 分钟,关联性可能不大。之前的 owner 节点挂掉可能是因为其他原因。
owner 挂掉之后,新的 owner 会自动选举出来。之前挂掉的 owner 节点上的同步任务,会自动地被迁移到其他存活的 TiCDC 节点上。
提供的报错 call stack 和 v5.4.0 的代码内容对应不上,请用户检查确认版本,提供 commit hash。
问题是发生在使用 tiup ctl 创建 changefeed 阶段么?这个阶段,访问 kafka 的是 tiup ctl,所以需要有访问 kafka 的能力。
这是内部的 request,从 TiCDC 发往 TiKV,并且有返回 response 说当前 region 不是 leader。
changefeed没有接收到request的问题。changefeed 不需要去收 request。
建议多重试一下。
sink-uri 中的参数,只是指定 kafka 相关的行为,此处设置为 partition-num=1 是没问题的。
从已有信息来看,问题不在 sink-uri 的配置上,--sink-uri=“kafka://127.0.0.1:9092/kafka-canal-json-test2-topic?protocol=canal-json&partition-num=1&max-message-bytes=67108864&replication-factor=2” 是一个合理的配置,上述配置需要保证:
因为 replication-factor = 2,下游 kafka 集群至少要…
自 5.4 版本开始,delete 类型的事件,相关的数据,将会存放在 Data 字段,这符合 Canal 官方对 Canal-JSON 格式的实现。
old 字段,在 canal-json 的定义中,用于存储之前的数据,仅被 Update 类型使用,其他情况均为 null。
消费端程序,处理 Delete 事件时,应该处理 Data 字段。
TiCDC Canal-JSON Protocol | PingCAP Docsmch_id 这一列,允许存在 null 值,并且未插入,可以通过给该列赋一个默认值来绕过这个问题。
该问题已经有 PR,下个版本修复。
在尝试删除 changefeed 的过程中,MySQL sink 报错,错误传播到了 server,导致重启。
该问题已经在 4.0.16 被修复。
能否同时提供一下完整的 tiup cluster deploy 使用的 yaml 文件,

请问是第一次部署 cdc 么?还是说是从某个版本上级上来的呢,如果是的话,原始版本是什么?
[image]
当前阶段,DDL 重试次数默认为 20 次,每次间隔 500ms,最大延迟 60s,即单次延迟的上限是 60s。
当前阶段,用户无法调整相关参数。