tick gc-ttl设置问题

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【遇到的问题:问题现象及影响】
[CDC:ErrSnapshotLostByGC]fail to create or maintain changefeed due to snapshot loss caused by GC. checkpoint-ts 444498506308386858 is earlier than GC safepoint at 44451646197963163

调整了gc-ttl 为48小时后, 报错GC safepoint 一直还是在24小时,貌似没有成功。如何查看ticdc 的gc point时间呢?

【资源配置】
【附件:截图/日志/监控】

  1. 出错之后再调整是不能恢复错误的,因为 GC 已经发生了。
  2. 可以通过 pdcli 的命令查看例如:
./pd-ctl service-gc-safepoint
{
  "service_gc_safe_points": [
    {
      "service_id": "gc_worker",
      "expired_at": 9223372036854775807,
      "safe_point": 444539433238396928
    },
    {
      "service_id": "ticdc-default-15674009460217235928",
      "expired_at": 1695802828,
      "safe_point": 444521874323931139
    }
  ],
  "gc_safe_point": 444521874323931139
}

我当前的:»
service-gc-safepoint
{
“service_gc_safe_points”: [
{
“service_id”: “gc_worker”,
“expired_at”: 9223372036854775807,
“safe_point”: 444494231631036416
},
{
“service_id”: “ticdc”,
“expired_at”: 1695870438,
“safe_point”: 444539610081263657 这个时间点为什么是当前的呢?我啥都不调整按理说也应该是24小时前的
}
],
“gc_safe_point”: 444494231631036416
}

我在tidb 备份一份数据 在下游mysql恢复后,cdc创建任务时,提示check point早于 gc save point。cdc 的gc-ttl设置的为48小时。但是没有起作用

首先,ticdc 的 gc-ttl 是在你 ticdc 搭建之后才生效的,它的目的是保证你ticdc 异常之后,一定时间内的数据不会被gc,进而导致ticdc恢复之后没办法继续之前的同步任务。
具体可以参考链接:https://docs.pingcap.com/zh/tidb/v5.4/troubleshoot-ticdc#ticdc-的-gc-ttl-是什么
所以说你新创建任务的时候是受 tidb_gc_life_time 影响的
需要保证全备的时间点到你搭cdc的时间点之间的间隔不能超过上游设置的 tidb_gc_life_time
举个例子来说就是比如今天17:00开始备份,明天 17:00搭ticdc 同步,那你的 tidb_gc_life_time 至少要设置为24h以上才能保证这一天中的kv change log 不会丢失。

Gc时间设置生效了麻

有可能是这个问题,我们又重新备份了,看看后面发生啥

看看gc是否生效