TiDBクラスタートラブルシューティングガイド
このガイドを使用すると、TiDBの使用中に基本的な問題を診断して解決するのに役立ちます。問題が解決しない場合は、次の情報と問題を作成するを収集してください。
- 正確なエラーメッセージとエラー発生時の操作
- すべてのコンポーネントの状態
fatal
を報告するコンポーネントのpanic
のerror
情報- 構成と展開のトポロジー
dmesg
のTiDBコンポーネント関連の問題
その他の情報については、 よくある質問(FAQ)を参照してください。
データベースに接続できません
tidb-server
、およびpd-server
を含むすべてのサービスが開始されていることを確認しtikv-server
。ps
コマンドを使用して、すべてのプロセスが実行されているかどうかを確認します。- 特定のプロセスが実行されていない場合は、次の対応するセクションを参照して、問題を診断および解決してください。
- すべてのプロセスが実行されている場合は、
tidb-server
のログをチェックして、次のメッセージが表示されているかどうかを確認します。- InformationSchemaが古くなっています:このメッセージは、
tikv-server
が接続できない場合に表示されます。pd-server
とtikv-server
の状態とログを確認します。 - パニック:このメッセージは、プログラムに問題がある場合に表示されます。詳細なパニックログと問題を作成するを提供してください。
- InformationSchemaが古くなっています:このメッセージは、
データがクリアされ、サービスが再デプロイされた場合は、次のことを確認してください。
tikv-server
とpd-server
のすべてのデータがクリアされます。特定のデータはtikv-server
に格納され、メタデータはpd-server
に格納されます。 2つのサーバーのうち1つだけがクリアされると、データに一貫性がなくなります。pd-server
とtikv-server
のデータがクリアされ、pd-server
とtikv-server
が再起動された後、tidb-server
も再起動する必要があります。クラスタIDは、pd-server
が初期化されるときにランダムに割り当てられます。したがって、クラスタが再デプロイされると、クラスタIDが変更され、tidb-server
を再起動して新しいクラスタIDを取得する必要があります。
tidb-server
を起動できません
tidb-server
を開始できない状況については、以下を参照してください。
起動パラメータにエラーがあります。
TiDBの構成とオプションを参照してください。
ポートは占有されています。
lsof -i:port
コマンドを使用して、特定のポートに関連するすべてのネットワークを表示し、tidb-server
を開始するポートが占有されていないことを確認します。
pd-server
に接続できません。- TiDBとPDの間のネットワークがスムーズに実行されているかどうかを確認します。これには、ネットワークにpingを実行できるかどうか、ファイアウォールの構成に問題があるかどうかなどが含まれます。
- ネットワークに問題がない場合は、
pd-server
プロセスの状態とログを確認してください。
tikv-server
を起動できません
tikv-server
を開始できない状況については、以下を参照してください。
起動パラメータのエラー: TiKVの構成とオプションを参照してください。
ポートが占有されている:
lsof -i:port
コマンドを使用して、特定のポートに関連するすべてのネットワークを表示し、tikv-server
を開始するポートが占有されていないことを確認します。
pd-server
に接続できません。TiDBとPDの間のネットワークがスムーズに実行されているかどうかを確認します。これには、ネットワークにpingを実行できるかどうか、ファイアウォールの構成に問題があるかどうかなどが含まれます。
ネットワークに問題がない場合は、
pd-server
プロセスの状態とログを確認してください。
ファイルが占有されています。
1つのデータベースファイルディレクトリで2つのTiKVファイルを開かないでください。
pd-server
を起動できません
pd-server
を開始できない状況については、以下を参照してください。
起動パラメータにエラーがあります。
PDの構成とオプションを参照してください。
ポートは占有されています。
lsof -i:port
コマンドを使用して、特定のポートに関連するすべてのネットワークを表示し、pd-server
を開始するポートが占有されていないことを確認します。
TiDB / TiKV/PDプロセスが予期せず中止されます
プロセスはフォアグラウンドで開始されていますか?クライアントが異常終了したため、プロセスが終了する場合があります。
コマンドラインで
nohup+&
実行されていますか?これにより、プロセスがhup信号を受信するため、プロセスが中止される可能性があります。スタートアップコマンドをスクリプトで記述して実行することをお勧めします。
TiDBパニック
パニックログと問題を作成するを提供してください。
接続が拒否されました
オペレーティングシステムのネットワークパラメータが正しいことを確認してください。これには次のものが含まれますが、これらに限定されません。
- 接続文字列のポートは、
tidb-server
の開始ポートと一致しています。 - ファイアウォールが正しく構成されている。
開くファイルが多すぎます
プロセスを開始する前に、 ulimit -n
の結果が十分に大きいことを確認してください。値をunlimited
または1000000
より大きい値に設定することをお勧めします。
データベースアクセスがタイムアウトし、システム負荷が高すぎる
まず、 遅いクエリログをチェックして、不適切なSQLステートメントが原因であるかどうかを確認します。
問題を解決できなかった場合は、次の情報を提供してください。
展開トポロジ
tidb-server
インスタンスはいくつデプロイされてtikv-server
pd-server
か?- これらのインスタンスはマシンにどのように分散されていますか?
これらのインスタンスがデプロイされているマシンのハードウェア構成:
- CPUコアの数
- メモリのサイズ
- ディスクの種類(SSDまたはハードディスク)
- それらは物理マシンですか、それとも仮想マシンですか?
- TiDBクラスタ以外に他のサービスはありますか?
pd-server
秒とtikv-server
秒は別々に展開されていますか?- 現在の操作は何ですか?
top -H
コマンドでCPUスレッド名を確認してください。- 最近、ネットワークまたはIO監視データに例外はありますか?