TiCDC查询同步状态报owner not found错误提示

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】tidb v4.0.9

【问题描述】我们tidb数据库生产环境v4.0.9,下游是mysql8.0.14, 添加了一个数据同步任务,现在查询cdc任务状态时,提示owner not found,这是什么原因导致的,现在数据不同步了,停止任务也报这个错误提示

查询状态
[root@ip-192-168-0-135 soft]# tiup cdc cli changefeed list --pd=http://192.168.1.219:2379
Starting component cdc: /root/.tiup/components/cdc/v4.0.9/cdc cli changefeed list --pd=http://192.168.1.219:2379
[2021/01/26 17:20:50.419 +08:00] [WARN] [client_changefeed.go:143] [“query changefeed info failed”] [error=“owner not found”]
[
{
“id”: “simple-replication-task”,
“summary”: null
}
]

停止任务报错
[root@ip-192-168-0-135 soft]# tiup cdc cli changefeed pause --pd=http://192.168.1.219:2379 --changefeed-id simple-replication-task
Starting component cdc: /root/.tiup/components/cdc/v4.0.9/cdc cli changefeed pause --pd=http://192.168.1.219:2379 --changefeed-id simple-replication-task
Error: owner not found
Usage:
cdc cli changefeed pause [flags]

Flags:
-c, --changefeed-id string Replication task (changefeed) ID
-h, --help help for pause

Global Flags:
–ca string CA certificate path for TLS connection
–cert string Certificate path for TLS connection
-i, --interact Run cdc cli with readline
–key string Private key path for TLS connection
–log-level string log level (etc: debug|info|warn|error) (default “warn”)
–pd string PD address, use ‘,’ to separate multiple PDs (default “http://127.0.0.1:2379”)

owner not found
Error: run /root/.tiup/components/cdc/v4.0.9/cdc (wd:/root/.tiup/data/SNC5vYM) failed: exit status 1

请问该如何处理?现在只同步了一张表的数据,如何能初始化重新同步整个数据库数据。

ticdc 的状态如何,ticdc log 辛苦发出来看下

查询同步任务状态
[root@ip-192-168-0-135 ~]# tiup cdc cli changefeed query --pd=http://192.168.1.219:2379 --changefeed-id=simple-replication-task
Starting component cdc: /root/.tiup/components/cdc/v4.0.9/cdc cli changefeed query --pd=http://192.168.1.219:2379 --changefeed-id=simple-replication-task
{
“info”: {
“sink-uri”: “mysql://cdcuser:ME7oGLxo@192.168.0.135:3306/?time-zone=”,
“opts”: {
“_changefeed_id”: “cli-verify”
},
“create-time”: “2021-01-21T13:38:52.159666034+08:00”,
“start-ts”: 422368387307143169,
“target-ts”: 0,
“admin-job-type”: 0,
“sort-engine”: “memory”,
“sort-dir”: “.”,
“config”: {
“case-sensitive”: true,
“enable-old-value”: false,
“force-replicate”: false,
“check-gc-safe-point”: true,
“filter”: {
“rules”: [
.
],
“ignore-txn-start-ts”: null,
“ddl-allow-list”: null
},
“mounter”: {
“worker-num”: 16
},
“sink”: {
“dispatchers”: null,
“protocol”: “default”
},
“cyclic-replication”: {
“enable”: false,
“replica-id”: 0,
“filter-replica-ids”: null,
“id-buckets”: 0,
“sync-ddl”: false
},
“scheduler”: {
“type”: “table-number”,
“polling-time”: -1
}
},
“state”: “normal”,
“history”: null,
“error”: null,
“sync-point-enabled”: false,
“sync-point-interval”: 600000000000
},
“status”: {
“resolved-ts”: 422369818207059973,
“checkpoint-ts”: 422369818207059973,
“admin-job-type”: 0
},
“count”: 0,
“task-status”: [
{
“capture-id”: “a6ff06b0-7d7e-447b-b347-708ffc8ce1a4”,
“status”: {
“tables”: {
“52”: {
“start-ts”: 422369818207059973,
“mark-table-id”: 0
},
“56”: {
“start-ts”: 422369818207059973,
“mark-table-id”: 0
}
},
“operation”: {
“52”: {
“delete”: false,
“boundary_ts”: 422369818207059973,
“done”: true,
“status”: 2
},
“56”: {
“delete”: false,
“boundary_ts”: 422369818207059973,
“done”: false,
“status”: 1
}
},
“admin-job-type”: 0
}
}
]
}

cdc服务器的日志文件
log.zip (5.6 MB)

看上面信息

  • tiup cdc cli changefeed query 可以正常访问
  • tiup cdc cli changefeed list 不可以正常访问
  • tiup cdc cli changefeed pause 不可以正常访问

看 cdc_stderr.log 里面 cdc 进程频繁 OOM,cdc.log 都是 1/21 号的 log。
猜测可能是 OOM 造成了,可以通过 TiCDC 的监控确认一下内存使用情况,是不是 owner OOM 了

出现OOM的PD服务器已经重启过了,目前tidb集群是正常的,现在如何能恢复cdc数据同步服务呢

贵司这边的操作流程不是很清楚, 尝试 restart -R ticdc 集群, query 看是否会报错.

好的,我们重启下试试

重启CDC服务后,查询CDC同步状态,报另外一个错误了required flag(s) “changefeed-id” not set,这个需要怎么处理呢?

[root@ip-192-168-0-135 soft]# tiup cdc cli changefeed query --pd=http://192.168.1.219:2379
Starting component cdc: /root/.tiup/components/cdc/v4.0.9/cdc cli changefeed query --pd=http://192.168.1.219:2379
Error: required flag(s) “changefeed-id” not set
Usage:
cdc cli changefeed query [flags]

Flags:
-c, --changefeed-id string Replication task (changefeed) ID
-h, --help help for query
-s, --simple Output simplified replication status

Global Flags:
–ca string CA certificate path for TLS connection
–cert string Certificate path for TLS connection
-i, --interact Run cdc cli with readline
–key string Private key path for TLS connection
–log-level string log level (etc: debug|info|warn|error) (default “warn”)
–pd string PD address, use ‘,’ to separate multiple PDs (default “http://127.0.0.1:2379”)

required flag(s) “changefeed-id” not set
Error: run /root/.tiup/components/cdc/v4.0.9/cdc (wd:/root/.tiup/data/SNHp62P) failed: exit status 1

需要重新添加同步任务是吗

list 看下changefeed 存在不, 不存在就需要手动重新创建

查询任务不存在,已经重新添加了新任务,现在碰到一个新问题,上游tidb数据库和下游mysql数据库记录不一致,有什么办法能实现重新全量同步后,再增量同步呢?

如果上游和下游的 TiDB 集群和 MySQL 数据不一致,并且计划重新做全量 + 增量数据,可以按照重新初始化一个下游环境的方式来做 ~

不知道cdc的同步机制是怎么样的,我们尝试了重新初始化cdc服务,数据并没有全量同步到下游的mysql库里面,只更新了增量的部分数据,没有任何错误提示。

dm数据同步软件重新初始化是可以的实现全量+增量重新同步的,我们希望cdc也能像这样的来实现

1、TiCDC 的定位是增量数据拉取和同步, 同时提供开放数据协议 TiCDC Open Protocol,支持其他系统订阅数据变更 ,下游的选择相对灵活,如 TiDB 、MySQL、kafka,pulsar 。DM 仅用于将上游的 MySQL 以及 MariaDB 同步到下游 TiDB ,数据迁移的场景居多 ~

2、TiCDC 的全量数据同步到下游 MySQL 需要手动的使用 dumpling 来全量导出数据,然后再导入下游 MySQL 。并且在启动 changefeed 时,通过指定 --start-ts 来实现增量数据的同步 :

https://docs.pingcap.com/zh/tidb/stable/manage-ticdc#创建同步任务

好的,明白了,非常感谢

:handshake::handshake::handshake:

如果还有其他疑问,可重新开帖 ~

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。