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