BR全量备份时,ticdc报错ErrSnapshotLostByGC

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.3
【复现路径】使用BR对集群进行全量备份

image

image

我这个ticdc已经运行好几天了,442730843081539585 这个时间是我2023年7月9日首次启动ticdc时指定的TSO。

br备份脚本发一下

gc时间1小时设置的是不是太短了?
目标端还原完数据库,启动cdc的时候,是不是已经超出了源库的gc时间1小时?

ticdc几天之前就启动了。

我再补充一下,我这个执行备份的集群上面的ticdc已经运行快两周了,今天执行BR一段时间之后,ticdc就报错了

br备份最后成功了吗?检查下最后的物理备份时间点是什么时候
tiup br validate decode --field=“end-version”
–storage “s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}” | tail -n1

备份成功了,值为

那你的ticdc报错和这次br备份应该没关系吧。。。

可能你启动cdc的时候就有报错
你看看在你启动的时间点之后有没有数据同步过来

问题是我ticdc运行了快两周了并没有报错。

ticdc挂掉前Owner日志:


方便传一份全点的cdc日志吗?你截图的信息感觉不像是第一次报错的时间点~

这就是第一次报错的时间点。 :sweat_smile:

cdc-20230720.log (1.3 MB)

查一下 changefeed bak-tidb的状态
管理 Changefeed | PingCAP 文档中心
看看当前的checkpoint在哪, 然后看看对应时间段的日志

兄弟,我第一张截图就是 changefeed bak-tidb的状态。checkpoint也截图了,相关时间段的日志也上传了。

  1. 这个问题,报错信息引起的原因就是用到了已经被gc掉的数据
  2. 排查思路就是查出那个比较早的checkpoint是怎么来的。
    从最开始查起,看看任务什么时候创建的,
    创建任务后都有过什么操作(对应时间点的日志),
  3. 你的截图信息不是太全

你可以按照这个思路捋一遍,如果确认都没问题,那就可能是碰bug了

那个checkpoint是我首次启动ticdc任务的时间。

  1. 按这个命令查出changefeed信息:
    cdc cli changefeed query --server=http://10.0.10.25:8300 --changefeed-id=simple-replication-task

  2. 拿出那个checkpoint对应时间点的日志,也就是创建任务时的日志;
    可能你这个changefeed创建时就有问题