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-serverpd-serverか?- これらのインスタンスはマシンにどのように分散されていますか?
これらのインスタンスがデプロイされているマシンのハードウェア構成:
- CPUコアの数
- メモリのサイズ
- ディスクの種類(SSDまたはハードディスク)
- それらは物理マシンですか、それとも仮想マシンですか?
- TiDBクラスタ以外に他のサービスはありますか?
pd-server秒とtikv-server秒は別々に展開されていますか?- 現在の操作は何ですか?
top -HコマンドでCPUスレッド名を確認してください。- 最近、ネットワークまたはIO監視データに例外はありますか?