title | aliases | ||
---|---|---|---|
PD Recover 使用文档 |
|
PD Recover 是对 PD 进行灾难性恢复的工具,用于恢复无法正常启动或服务的 PD 集群。
要使用 PD Recover,你可以从源代码编译,也可以直接下载 TiDB 安装包。
- Go:PD Recover 使用了 Go 模块,请安装 Go v1.13 或更新版本。
- 在 PD 根目录下,运行
make pd-recover
命令来编译源代码并生成bin/pd-recover
。
注意:
一般来说,用户不需要编译源代码,因为发布的二进制文件或 Docker 中已包含 PD Recover 工具。开发者可以参考以上步骤来编译源代码。
PD Recover 包含在 TiDB 安装包中。直接下载 TiDB 安装包即可获取最新版本的 PD Recover。
安装包 | 操作系统 | 架构 | SHA256 校验和 |
---|---|---|---|
https://download.pingcap.org/tidb-{version}-linux-amd64.tar.gz (pd-recover) |
Linux | amd64 | https://download.pingcap.org/tidb-{version}-linux-amd64.sha256 |
注意:
{version}
是 TiDB 的版本号。例如,v5.1.0
的安装包下载链接为https://download.pingcap.org/tidb-v5.1.0-linux-amd64.tar.gz
。
一般在 PD、TiKV 或 TiDB 的日志中都可以获取 Cluster ID。你可以直接在服务器上查看日志以获取 Cluster ID。
使用以下命令,从 PD 日志中获取 Cluster ID:
{{< copyable "shell-regular" >}}
cat {{/path/to}}/pd.log | grep "init cluster id"
[2019/10/14 10:35:38.880 +00:00] [INFO] [server.go:212] ["init cluster id"] [cluster-id=6747551640615446306]
...
或者也可以从 TiDB 或 TiKV 的日志中获取。
使用以下命令,从 TiDB 日志中获取 Cluster ID:
{{< copyable "shell-regular" >}}
cat {{/path/to}}/tidb.log | grep "init cluster id"
2019/10/14 19:23:04.688 client.go:161: [info] [pd] init cluster id 6747551640615446306
...
使用以下命令,从 TiKV 日志中获取 Cluster ID:
{{< copyable "shell-regular" >}}
cat {{/path/to}}/tikv.log | grep "connect to PD cluster"
[2019/10/14 07:06:35.278 +00:00] [INFO] [tikv-server.rs:464] ["connect to PD cluster 6747551640615446306"]
...
在指定已分配 ID 时,需指定一个比当前最大的已分配 ID 更大的值。可以从监控中获取已分配 ID,也可以直接在服务器上查看日志。
要从监控中获取已分配的 ID,需要确保你所查看的监控指标是上一任 PD Leader 的指标。可从 PD Dashboard 中 Current ID allocation 面板获取最大的已分配 ID。
要从 PD 日志中获取分配的 ID,需要确保你所查看的日志是上一任 PD Leader 的日志。运行以下命令获取最大的已分配 ID:
{{< copyable "shell-regular" >}}
cat {{/path/to}}/pd*.log | grep "idAllocator allocates a new id" | awk -F'=' '{print $2}' | awk -F']' '{print $1}' | sort -r | head -n 1
4000
...
你也可以在所有 PD server 中运行上述命令,找到最大的值。
部署新的 PD 集群之前,需要停止当前的 PD 集群,然后删除旧的数据目录(用 --data-dir
指定)。
{{< copyable "shell-regular" >}}
./pd-recover -endpoints http://10.0.1.13:2379 -cluster-id 6747551640615446306 -alloc-id 10000
当出现 recovery is successful
的提示信息时,重启整个集群。
新建 PD 集群时,会生成新的 Cluster ID。可以通过日志判断旧集群的 Cluster ID。
执行 pd-recover 时需要 PD 提供服务,请先部署并启动 PD 集群。