问题【ticdc 启动报错:[CDC:ErrInvalidEtcdKey] invalid key: /meta/ticdc-delete-etcd-key-count】

【TiDB 使用环境】 测试环境
【TiDB 版本】
tidb 组件版本7.5.3
ticdc 版本8.5.6 未开启新架构
【集群数据量】
两套3PD +3Kv +3 tidb 通过ticdc 做同步

【遇到的问题】
重启ticdc 时候会报错
[CDC:ErrInvalidEtcdKey] invalid key: /meta/ticdc-delete-etcd-key-count

ai 辅助分析源码说是 ticdc 会写入这个 ticdc-delete-etcd-key-count 这个key

但是在/etcd/etcdky.go Parse 中又没有定义这个是合法key

func (k *CDCKey) Parse(clusterID, key string) error {
	if !strings.HasPrefix(key, clusterPrefix(clusterID)) {
		return errors.ErrInvalidEtcdKey.GenWithStackByArgs(key)
	}
	key = key[len(cdcKeyRoot):]
	parts := strings.Split(key, "/")
	k.ClusterID = parts[1]
	key = key[len(k.ClusterID)+1:]
	if strings.HasPrefix(key, metaPrefix) {
		key = key[len(metaPrefix):]
		switch {
		case strings.HasPrefix(key, ownerKey):
			k.Tp = CDCKeyTypeOwner
			k.CaptureID = ""
			key = key[len(ownerKey):]
			if len(key) > 0 {
				key = key[1:]
			}
			k.OwnerLeaseID = key
		case strings.HasPrefix(key, captureKey):
			k.Tp = CDCKeyTypeCapture
			k.CaptureID = key[len(captureKey)+1:]
			k.OwnerLeaseID = ""
		case strings.HasPrefix(key, metaVersionKey):
			k.Tp = CDCKeyTypeMetaVersion
		default:
			return errors.ErrInvalidEtcdKey.GenWithStackByArgs(key)
		}

开启新架构会跳过这个key的解析

有遇到相同情况的吗

这个版本差太多了吧,tidb 起码也要8.5.x 才好

这个版本差太多了吧,tidb 起码也要8.5.x 才好

根因不是笼统的版本差,是 PD etcd 里残了一条高版本 cdc 写入的 /meta/ticdc-delete-etcd-key-count,7.5 分支 CDCKey.Parse 的 switch 没这个 case,遍历到就走 default 抛 ErrInvalidEtcdKey。要么 cdc 降到 7.5.x,要么 etcdctl del 掉这条;集群上 8.5 后开新架构就不解析它。

etcd 里残留了旧版本 TiCDC 写入的统计埋点 key,当前 8.5.6 版本代码无法识别这个 key,导致 TiCDC 启动失败。该 key 仅用于计数,不影响同步任务数据。

ticdc 启动的时候遇到这个报错就会直接 exit 0 了后续同步数据不会进行

升级版本看看

etcd里那条残留key删掉就行,7.5解析不了它