重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

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)Linuxamd64https://download.pingcap.org/tidb-{version}-linux-amd64.sha256

ノート:

{version}はTiDBのバージョン番号を示します。たとえば、 {version}v5.4.1の場合、パッケージのダウンロードリンクはhttps://download.pingcap.org/tidb-v5.4.1-linux-amd64.tar.gzです。

クイックスタート

このセクションでは、PDリカバリを使用してPDクラスタをリカバリする方法について説明します。

クラスタIDを取得する

クラスタIDは、PD、TiKV、またはTiDBのログから取得できます。クラスタ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を取得するには、表示しているメトリックが最後の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クラスタをデプロイして開始します。