BR 备份全库报错,日志:[pd] failed to get cluster id ……

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
center os 7.4 ,vm 虚拟机

【概述】 场景 + 问题概述
执行br 备份全库操作时错误:
[root@ty27 bin]# ./br backup full --pd “192.168.10.7:2379” --storage “local:///tmp/backup” --ratelimit 120 --log-file backupfull.log
Detail BR log in backupfull.log
Error: [pd] failed to get cluster id

【TiDB 版本】
v5.0.0

机器间都是互相ping的通的

这个是什么问题,

1 个赞

可以尝试给/tmp/backup目录777权限

2 个赞

image
权限给过了

2 个赞

你的pd端口号没写错吧? 默认不是12379吗?

2 个赞

应该不是权限的问题, tidb用户有无密码sudo root的权限,日志也没有报权限相关的错

2 个赞

端口没写错

1 个赞

被权限问题坑几次了,上来就先看权限:joy:

1 个赞

看起来似乎是 PD 和 BR 之间连接不畅……
在 BR 节点上执行 curl http://{pdAddr}/pd/api/v1/cluster/status,看看能不能成功返回?

一些猜测:
PD 有没有启动 TLS?如果启动了试试看 -u https://<pd-addr>
或者 BR 节点和 PD 之间有没有防火墙?

1 个赞

–pd参数给的是pd leader吗

1 个赞

网络是通的,防火墙是关闭的。curl http://{pdAddr}/pd/api/v1/cluster/status 没有返回信息

1 个赞

所有pd 节点都试过,一样的。而且我看视频里面也没有要求 pd 节点一定要是 leader,应该随便一个pd 节点就行吧

1 个赞

是的,文档里面说随便一个pd都行,但是我以前碰到过用leader就行别的不行:joy:也可能是恰好碰到其他问题了

1 个赞

我都是按照视频里面一步一步的来的,纳闷。操作系统你用的什么版本 centeros7.4?

1 个赞

TLS怎么启动?

我这边是7.9,应该和OS版本没啥关系

这有点奇怪,正常状态下应该返回一段 JSON:

$ curl ${pd_addr}/pd/api/v1/cluster/status
{
  "raft_bootstrap_time": "2021-10-23T20:00:20.328082557+08:00",
  "is_initialized": true,
  "replication_status": ""
}

可以检查一下 PD 的日志吗?

pd 日志里没报错信息

听起来更加奇怪了,目前的猜测:

  1. PD 的 handler panic 了,这样应该在 PD 的 stderr 中会有体现(如果使用 tiup,应该在 ${deploy-dir}/pd-${port}/log/pd_stderr.log 中)。
  2. TCP 层不通,可能有包被异常截断了(但是如果集群能正常运行的话,这个的概率可能不高),这个可能性可以在 PD 的机器上通过 nc 监听一些端口,然后在 BR 的机器上连接试试看。

如果方便的话,可以上传一下完整的 PD 日志吗?(包括 pd.log 和 pd_stderr.log)

pd.log (20.0 KB)

只有 pd.log 文件中有内容, pd_stderr.log 是空的

[2021/10/28 15:41:22.580 +08:00] [WARN] [grpclog.go:60] ["transport: http2Server.HandleStreams failed to read frame: read tcp 192.168.10.6:2379->192.168.10.12:58206: read: connection reset by peer"]

看起来是 gRPC 的 TCP 连接被重置了,具体原因还不明确。要不要用 nc / telnet 一类的工具试试看机器之间能不能正常 TCP 通信?如果不行可能就是网络不通畅的问题了;如果可以那就说明可能存在一些更加隐晦的问题 :frowning: