PDRecoverユーザーガイド
PD Recoverは、PDのディザスタリカバリツールであり、サービスを正常に開始または提供できないPDクラスタをリカバリするために使用されます。
ソースコードからコンパイルする
- 行け Goモジュールを使用するため、バージョン1.13以降が必要です。
- PDプロジェクトのルートディレクトリで、
make pd-recover
コマンドを使用してbin/pd-recover
をコンパイルおよび生成します。
ノート:
通常、PD制御ツールはリリースされたバイナリまたはDockerにすでに存在するため、ソースコードをコンパイルする必要はありません。ただし、開発者ユーザーは、ソースコードのコンパイルについて上記の手順を参照できます。
TiDBインストールパッケージをダウンロードする
PD RecoverはTiDBパッケージに含まれているため、最新バージョンのPD Recoverをダウンロードするには、TiDBパッケージを直接ダウンロードしてください。
パッケージ名 | OS | 建築 | 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のバージョン番号を示します。たとえば、{version}
がv5.4.2
の場合、パッケージのダウンロードリンクはhttps://download.pingcap.org/tidb-v5.4.2-linux-amd64.tar.gz
です。
クイックスタート
このセクションでは、PDリカバリを使用してPDクラスタをリカバリする方法について説明します。
クラスタIDを取得する
クラスタIDは、PD、TiKV、またはTiDBのログから取得できます。クラスタIDを取得するには、サーバーでログを直接表示できます。
PDログからクラスタIDを取得する(推奨)
PDログからクラスタIDを取得するには、次のコマンドを実行します。
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ログからクラスタIDを取得する
TiDBログからクラスタIDを取得するには、次のコマンドを実行します。
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ログからクラスタIDを取得する
TiKVログからクラスタIDを取得するには、次のコマンドを実行します。
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を取得するには、モニターから取得するか、サーバーで直接ログを表示します。
モニターから割り当てられたIDを取得します(推奨)
モニターから割り当てられたIDを取得するには、表示しているメトリックが最後のPDリーダーのメトリックであることを確認する必要があります。また、PDダッシュボードの[現在のID割り当て]パネルから最大の割り当てIDを取得できます。
PDログから割り当てられたIDを取得します
PDログから割り当てられたIDを取得するには、表示しているログが最後のPDリーダーのログであることを確認する必要があります。次のコマンドを実行して、割り当てられた最大IDを取得できます。
cat {{/path/to}}/pd*.log | grep "idAllocator allocates a new id" | awk -F'=' '{print $2}' | awk -F']' '{print $1}' | sort -r -n | head -n 1
4000
...
または、すべてのPDサーバーで上記のコマンドを実行するだけで、最大のサーバーを見つけることができます。
新しいPDクラスタをデプロイします
新しいPDクラスタをデプロイする前に、既存のPDクラスタを停止してから、前のデータディレクトリを削除するか、 --data-dir
を使用して新しいデータディレクトリを指定する必要があります。
pd-recoverを使用する
1つのPDノードでpd-recover
つだけ実行する必要があります。
./pd-recover -endpoints http://10.0.1.13:2379 -cluster-id 6747551640615446306 -alloc-id 10000
クラスタ全体を再起動します
リカバリが成功したというプロンプト情報が表示されたら、クラスタ全体を再起動します。
FAQ
クラスタIDを取得すると、複数のクラスタIDが見つかります
PDクラスタが作成されると、新しいクラスタIDが生成されます。ログを表示することで、古いクラスタのクラスタIDを確認できます。
エラーdial tcp 10.0.1.13:2379: connect: connection refused
pd-recover
実行時に接続が拒否されました
pd-recover
を実行する場合はPDサービスが必要です。 PDリカバリを使用する前に、PDクラスタをデプロイして開始します。