br 备份集群或者某个库到 s3协议的minion存储是报错提示min resolved ts is not enabled

【TiDB 使用环境】测试环境
【TiDB 版本】8.1.0
【操作系统】Centos7
【部署方式】KVM虚拟机
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

背景
测试环境的TIDB是部署在IDC 环境的。 一个PD,2个server,3个TiKV。目的是在办公网络恢复一套TIDB集群用于开发本地使用。 IDC 和办公网络之间是通过vpn 网络打通的。

为了排除minion本身的问题,在IDC 和办公网络的单个物理机上,采用同样的方式部署了相同版本,相同节点数量的Minion。

在IDC 通过 tiup backup db本地到IDC的minio 是没有问题 的。

然后同样的命令备份到办公网络的Minio报错如下, 不过是 br backup full 还是 br backup db 都是相同的报错,提示 [kv.go:809] ["get resolved TS from PD failed"] [error="min resolved ts is not enabled"] [errorVerbose="min resolved ts is not enabled

[2025/08/28 12:16:47.381 +08:00] [DEBUG] [client.go:191] ["[pd] request the http url"] [source=tikv-driver] [name=GetMinResolvedTSByStoresIDs] [url=http://192.168.3.115:2379/pd/api/v1/min-resolved-ts] [method=GET] [caller-id=pd-http-client]
[2025/08/28 12:16:47.383 +08:00] [DEBUG] [kv.go:809] ["get resolved TS from PD failed"] [error="min resolved ts is not enabled"] [errorVerbose="min resolved ts is not enabled\ngithub.com/tikv/pd/client/http.(*client).GetMinResolvedTSByStoresIDs\n\t/root/go/pkg/mod/github.com/tikv/pd/client@v0.0.0-20240430080403-1679dbca25b3/http/interface.go:881\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).getMinResolvedTSByStoresIDs\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:773\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).updateGlobalTxnScopeTSFromPD\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:807\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).updateSafeTS\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:676\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).safeTSUpdater\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:669\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1650"]
[2025/08/28 12:16:47.383 +08:00] [DEBUG] [client.go:191] ["[pd] request the http url"] [source=tikv-driver] [name=GetMinResolvedTSByStoresIDs] [url="http://192.168.3.115:2379/pd/api/v1/min-resolved-ts?scope=1532986,2784404,2822276"] [method=GET] [caller-id=pd-http-client]
[2025/08/28 12:16:47.384 +08:00] [DEBUG] [kv.go:698] ["get resolved TS from PD failed"] [error="min resolved ts is not enabled"] [errorVerbose="min resolved ts is not enabled\ngithub.com/tikv/pd/client/http.(*client).GetMinResolvedTSByStoresIDs\n\t/root/go/pkg/mod/github.com/tikv/pd/client@v0.0.0-20240430080403-1679dbca25b3/http/interface.go:881\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).getMinResolvedTSByStoresIDs\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:773\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).updateSafeTS\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:695\ngithub.com/tikv/client-go/v2/tikv.(*KVStore).safeTSUpdater\n\t/root/go/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240516040321-776d981aab13/tikv/kv.go:669\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1650"] [stores="[1532986,2784404,2822276]"]

单独调用日志中提到的 http://192.168.3.115:2379/pd/api/v1/min-resolved-ts 的结果如下

{
  "min_resolved_ts": 0,
  "persist_interval": "0s",
  "stores_min_resolved_ts": null
}

求大佬指点

是不是PD 组件的`min-resolved-ts 功能未启用?

从没有文档中没有找到这个参数的配置。找到个类似的min-resolved-ts-persistence-interval ,但是也不一样。

如果说这个值目前是0 ,代表为启动,但是

1、 tidb 集群在IDC,备份的minio在IDC是没有问题的;
2、 tidb 集群在IDC,备份的COS 在腾旭云也是没有问题的(IDC和腾讯云之间专线)

现在相同的命令,如果minio是通过vpn访问的非IDC环境就不行。

1 个赞

仔细看了看文档,应该就是这个参数。 测试这个TIDB也确实是从很早的版本慢慢升级到当前的8.1.0的。

但是为啥都是关闭的情况,通过vpn网络备份就不行呢

看解析,这个参数影响的也是集群,和网络延迟应该没有关系呢

没有遇到过。我用你的版本实验一下。能不能复现

有没有别的报错呢,看起来这个报错不像是导致失败的直接原因。可以看看 BR 日志里面有没有 ERROR 级别的日志。

1 个赞

嗯嗯,可以试试看, 我目前查到的信息,br 会去pd 获取这个min-resolved-ts,但是禁用的情况下,这个值是空的,我debug br日志发现,IDC备份(备份到IDC的minio)它也报错,但是它报错几条就开始正常备份了,但是备份到办公网络就一直报这个错误

debug日志分析,发现备份到办公网络就是一直报这个错误
但是备份到IDC环境,也有报错,但是很快就自己开始正常推进region的备份了。没有找到有用的信息

而且通过 --backupts '2025-08-28 16:10:00 +08:00' 备份办公网络也是同样的问题

这个是备份到办公网络时的日志,一直在刷那个错误
br.log.2025-08-28T16.17.15+0800.log (183.0 KB)

这个是备份IDC环境的日志,有报错但是很快就正常备份了
br-neibu-tidb2office-202508281553.log (149.3 KB)

最新排查结果同步
目前把这个开关打开,设置成1秒,

{
  "is_real_time": true,
  "min_resolved_ts": 460421732784930827,
  "persist_interval": "1s",
  "stores_min_resolved_ts": null
}

那个错误没有了,但是BR Debug显示,一直在请求这个接口

难道里面的真的有什么网络层面的限制?

打开 resolved ts 后,备份还有报错吗?

第一个备份到办公网络的日志打不开。可以重新上传下

没有报错了,但是如上面这个截图,一直在请求min-resolved-ts这个接口

@表妹 这里编辑,重新上传服务不生效呢, 修改文件名都不行,手动修改了下内容重新保存才能重新上传

重新上传备份到办公网络错误的日志

br-neibu-tidb2office-with-errors-copy.log (183.1 KB)

看了下代码和日志

不管有没有开启 resolved ts,都不是无法备份的根因。虽然一直打印这个 Debug 日志,但是这个 tikv client go 的错误,是可以降级处理的 https://github.com/tikv/client-go/blob/b794d681774fa9e98266e6404a279b51537ef446/tikv/kv.go#L800。

最新上传的日志,时间大约有 1 min,没有看出来问题在哪。

需要看看 TiKV 的日志,选择一台 TiKV 的日志搜索 backup 看看。

1 个赞

我是搞个nas,挂载到所有tidb节点上。备份到local 这个该在的nas,然后同样挂载到另外一个需要恢复的上面。直接恢复。

tikv访问办公网minio正常吗

我的情况比较特殊,相当于是从一个环境搬迁到另外一个环境,两个隔离的环境之间使用vpn打通的

你的回答给了我一个思路,因为br最终实际是copy tikv的sst文件到minio的,br 开始备份时一些基本信息都写入到了minio了,但是实际tikv的sst没有。 我可能猜到什么问题了

已确认是防火墙拦截了三个TiKV节点导致的,添加路由和防火墙放心之后就恢复了。感谢大佬

1 个赞

嗯,最终是tikv节点到minio的网络问题,防火墙给拦截了