TiCDC执行后,没有任何报错信息,但数据始终不同步

用cdc cli changefeed query查询状态为normal,但数据一直没同步:
{
“info”: {
“sink-uri”: “mysql://root:aaaaaa@172.31.0.246:4000/”,
“opts”: {
“_changefeed_id”: “rpt-cdc-task”
},
“create-time”: “2021-06-17T21:01:54.814229576+08:00”,
“start-ts”: 425697915851505672,
“target-ts”: 0,
“admin-job-type”: 2,
“sort-engine”: “unified”,
“sort-dir”: “.”,
“config”: {
“case-sensitive”: true,
“enable-old-value”: false,
“force-replicate”: false,
“filter”: {
“rules”: [
“yxt.ote_userexam”,
“yxt.ote_examarrange”,
“yxt.sta_org_user”
],
“ignore-txn-start-ts”: null,
“ddl-allow-list”: null
},
“mounter”: {
“worker-num”: 6
},
“sink”: {
“dispatchers”: [
{
“matcher”: [
“yxt.ote_userexam”,
“yxt.ote_examarrange”,
“yxt.sta_org_user”
],
“dispatcher”: “ts”
}
],
“protocol”: “default”
},
“cyclic-replication”: {
“enable”: false,
“replica-id”: 1,
“filter-replica-ids”: null,
“id-buckets”: 0,
“sync-ddl”: true
},
“scheduler”: {
“type”: “table-number”,
“polling-time”: -1
}
},
“state”: “normal”,
“history”: null,
“error”: null,
“sync-point-enabled”: false,
“sync-point-interval”: 600000000000
},
“status”: {
“resolved-ts”: 0,
“checkpoint-ts”: 425697915851505672,
“admin-job-type”: 0
},
“count”: 0,
“task-status”: [
{
“capture-id”: “e2236b7f-5c60-4c3e-a910-6d56ddbb9d80”,
“status”: {
“tables”: {
“2943”: {
“start-ts”: 425697915851505672,
“mark-table-id”: 0
},
“952”: {
“start-ts”: 425697915851505672,
“mark-table-id”: 0
},
“954”: {
“start-ts”: 425697915851505672,
“mark-table-id”: 0
}
},
“operation”: {
“2943”: {
“delete”: false,
“boundary_ts”: 425697915851505672,
“done”: false
},
“952”: {
“delete”: false,
“boundary_ts”: 425697915851505672,
“done”: false
},
“954”: {
“delete”: false,
“boundary_ts”: 425697915851505672,
“done”: false
}
},
“admin-job-type”: 1
}
}
]
}

1 个赞
  1. tso 设置的时间是 2021-06-17 13:44:35.581 +0800 CST ? 上游 tidb 配置的 gc 是多长时间? 这个tso 配置了吗?默认使用当前时间是否可以?
  2. 查看下 ticdc 日志是否有其他报错。

ticdc日志没报错,这个任务是是要从2021-06-17 13:44:35.581开始执行的,gc设置的是48小时

ticdc_debug.zip (107.7 KB)

下游是TiDB,版本是4.0.8,有做表过滤,只同步其中三张表

1.上游tidb gc设置:
image

ticdc任务启动指定–start-ts=425697915851505672,对应时间"checkpoint": “2021-06-17 13:44:35.581”
应该是在gc safe point之后

2.ticdc时不时出现以下日志:
[2021/06/17 23:48:54.993 +08:00] [INFO] [client.go:850] [“EventFeed disconnected”] [regionID=7] [requestID=93] [span=“[6d44444c4a6f624cff69ff737400000000ff0000f90000000000ff00006c0000000000fa, 6d44444c4a6f624cff69ff737400000000ff0000f90000000000ff00006d0000000000fa)”] [checkpoint=425707421009444865] [error="[CDC:ErrEventFeedEventError]not_leader:<region_id:7 > "]
[2021/06/17 23:48:54.993 +08:00] [INFO] [region_range_lock.go:365] [“unlocked range”] [lockID=11] [regionID=7] [startKey=6d44444c4a6f624cff69ff737400000000ff0000f90000000000ff00006c0000000000fa] [endKey=6d44444c4a6f624cff69ff737400000000ff0000f90000000000ff00006d0000000000fa] [checkpointTs=425707421009444865]
[2021/06/17 23:48:54.993 +08:00] [INFO] [region_cache.go:816] [“switch region peer to next due to NotLeader with NULL leader”] [currIdx=0] [regionID=7]
[2021/06/17 23:48:54.993 +08:00] [INFO] [region_range_lock.go:217] [“range locked”] [lockID=11] [regionID=7] [startKey=6d44444c4a6f624cff69ff737400000000ff0000f90000000000ff00006c0000000000fa] [endKey=6d44444c4a6f624cff69ff737400000000ff0000f90000000000ff00006d0000000000fa] [checkpointTs=425707421009444865]

设置日志debug级别后,一直返回:
[2021/06/17 23:57:50.080 +08:00] [DEBUG] [changefeed.go:768] [“skip update resolved ts”] [taskPositions=0] [taskStatus=1]
[2021/06/17 23:57:50.623 +08:00] [DEBUG] [changefeed.go:768] [“skip update resolved ts”] [taskPositions=0] [taskStatus=1]
[2021/06/17 23:57:51.217 +08:00] [DEBUG] [changefeed.go:768] [“skip update resolved ts”] [taskPositions=0] [taskStatus=1]
[2021/06/17 23:57:51.900 +08:00] [DEBUG] [changefeed.go:768] [“skip update resolved ts”] [taskPositions=0] [taskStatus=1]
是否正常

3.ticdc启动不指定–start-ts后,checkpoint也不会往后推
#cdc cli changefeed create --pd=http://172.31.0.213:2379 --sink-uri=“mysql://root@aaaaa@172.31.0.246:4000/” --changefeed-id=“rpt-cdc-task” --config=rpt-cdc.toml
#cdc cli changefeed list --pd=http://172.31.0.213:2379
[
{
“id”: “rpt-cdc-task”,
“summary”: {
“state”: “normal”,
“tso”: 425707684005412873,
“checkpoint”: “2021-06-18 00:05:38.131”, --不会变化
“error”: null
}
}
]

这三张表是用lightning local模式全量导入的,现在要做增量同步

下游是TiDB 吗?配置里写的是MySQL?
mysql://root:aaaaaa@172.31.0.246:4000 改为 tidb 试试

改成tidb也不行

上下游版本都是 4.0.8

wecom-temp-b96414931a8a8eb74aa69bfad0ac8c9b

麻烦确认一下,获取 TS 方式是否参考以下文档方式。选取一下 start ts ,做一下数据同步试试。

https://docs.pingcap.com/zh/tidb/stable/troubleshoot-ticdc#ticdc-创建任务时如何选择-start-ts

我没指定start ts,也是不行

cdc cli changefeed create --pd=http://172.31.0.213:2379 --sink-uri=“tidb://root:aaaaa@172.31.0.246:4000” --config rpt-cdc.toml --start-ts=0 --changefeed-id rpt-cdc-task-bright1

我指定start-ts=0,还是不行

这个检查点一直不会往前推进

case-sensitive = true
enable-old-value = false
[filter]
rules = [‘yxt.ote_userexam’,‘yxt.ote_examarrange’,‘yxt.sta_org_user’]

[sink]

protocol = “default”

[mounter]
worker-num = 6

[cyclic-replication]
enable = false

replica-id = 1
sync-ddl = true

这是配置文件

  1. 不设置 start-ts 为 0 ,别使用这个参数
    cdc cli changefeed create --pd=http://172.31.0.213:2379 --sink-uri=“tidb://root:aaaaa@172.31.0.246:4000” --config rpt-cdc.toml --changefeed-id rpt-cdc-task-bright1

  2. 环形复制需要吗?先别配置了试试
    [cyclic-replication]
    enable = false

replica-id = 1
sync-ddl = true

  1. 这个任务删掉重新配置,或者修改配置后 update 更新。

startTs less than gcSafePoint: [tikv:9006]GC life time is shorter than transaction duration, transaction starts at 425697915851505672, GC safe point is 18446744073709551615
创建时提示这个错误

image

1.最上面查询状态的 resolved-ts 一直为 0 ,看起来是 ticdc 集群本身卡主,麻烦删掉任务重启 cdc 进程后,再新建任务试下 ;
2.麻烦检查下同步的三张表是否满足下面的限制条件:

[2021/06/18 17:22:52.272 +08:00] [WARN] [client_changefeed.go:208] [“this changefeed has been deleted, the residual meta data will be completely deleted within 24 hours.”]

删除时提示这个

CDC我有重启过