このトピックでは、RDS インスタンスへの接続に失敗した場合のトラブルシューティング方法について説明します。
概要
問題のトラブルシューティングを行うには、次の 5 つの項目を確認してください。
ステップ 1: インスタンスステータスと接続情報の確認
-
ApsaraDB for RDS コンソールにログインします。[インスタンス] ページで、RDS インスタンスのインスタンスステータスを確認し、実行中であることを確認します。インスタンスの状態が異常またはロック済みの場合は、問題のトラブルシューティングを行ってください。インスタンスがロックされている場合は、「ストレージ不足が原因で発生した ApsaraDB for RDS for MySQL インスタンスの自動ロックのトラブルシューティング」をご参照ください。インスタンスがロックされている間、アプリケーションはインスタンスからの読み取りまたは書き込みができません。業務への影響が許容される場合は、インスタンスを再起動できます。この操作は慎重に実行してください。
-
データベース接続コードまたはクライアントツールで、内部エンドポイントとパブリックエンドポイントを含む接続情報を確認します。詳細については、「ApsaraDB for RDS インスタンスへの接続」をご参照ください。
インスタンス詳細ページで、左側メニューの [データベース接続] をクリックします。[エンドポイント] セクションで、内部エンドポイントとパブリックエンドポイントを確認できます。エンドポイントは
rm-xxx.mysql.rds.aliyuncs.comの形式で、ポートは3306です。
ステップ 2: ホワイトリスト設定の検証
ローカルデバイスの正しい IP アドレスが RDS インスタンスの IP ホワイトリストに追加されていることを確認します。テストとして、一時的に 0.0.0.0/0 をホワイトリストに追加します。接続が成功した場合、元のホワイトリストの設定に誤りがあったことを示します。0.0.0.0/0 エントリを削除し、正しい IP アドレスを追加してください。ホワイトリストの設定方法の詳細については、「IP アドレスホワイトリストの設定」をご参照ください。ホワイトリストに関する次の点に注意してください。
-
デフォルトでは、 ページのホワイトリストには、IP アドレス
127.0.0.1のみが含まれています。このアドレスにより、どのデバイスも RDS インスタンスにアクセスできなくなります。ECS インスタンスなどのクライアントの IP アドレスをホワイトリストに追加する必要があります。 -
0.0.0.0を追加した場合、この形式は正しくありません。正しい形式は0.0.0.0/0です。説明0.0.0.0/0を設定すると、あらゆる IP アドレスからのアクセスが許可されます。慎重に使用してください。 -
高セキュリティホワイトリストモードが有効になっているかどうかを確認します。このモードが有効になっている場合は、次の確認を実行してください。
-
Virtual Private Cloud (VPC) で内部エンドポイントを使用している場合は、ECS インスタンスの内部 IP アドレスが VPC ホワイトリストグループに追加されていることを確認します。
-
クラシックネットワークで内部エンドポイントを使用している場合は、ECS インスタンスの内部 IP アドレスがクラシックネットワークホワイトリストグループに追加されていることを確認します。
-
パブリックネットワーク経由で接続している場合は、デバイスのパブリック IP アドレスがクラシックネットワークホワイトリストグループに追加されていることを確認します。VPC ホワイトリストグループは、パブリックネットワーク接続には適用されません。
-
-
ホワイトリスト内のパブリック IP アドレスが、デバイスの実際のアウトバウンド IP アドレスではない可能性があります。この不一致は、次の理由で発生する可能性があります。
-
パブリック IP アドレスが静的ではなく、変更される可能性があります。
-
IP 検索ツールや Web サイトで確認したパブリック IP アドレスは、不正確な場合があります。正しいアウトバウンドパブリック IP アドレスを確認するには、次のトピックをご参照ください。
-
ステップ 3: データベースパフォーマンスの確認
RDS インスタンスのパフォーマンスモニタリングデータで、リソース不足が発生していないか確認します。
-
現在の接続数を確認します。
-
アイドル接続またはアクティブな接続が多すぎると、最大接続数に達する可能性があります。インスタンス仕様でサポートされる最大接続数については、「プライマリインスタンス仕様」をご参照ください。
-
アプリケーションコードを確認し、接続が適切に設定およびクローズされていることを確認します。クローズされていない接続は、RDS リソースを消費し、接続数の上限に達する可能性があります。詳細については、「ApsaraDB for RDS for MySQL インスタンスの接続プールが満杯の場合の対処」または「ApsaraDB for RDS for PostgreSQL インスタンスへの過剰な接続数の対処」をご参照ください。
-
-
サービスの成長に伴い接続の問題が発生している場合は、インスタンス仕様をアップグレードしてください。
説明アップグレードプロセスでは、約 30 秒間の瞬断が発生する可能性があります。サービス継続性を確保するために、アプリケーションに自動再接続メカニズムを実装してください。詳細については、「使用上の注意」をご参照ください。
-
ネットワークトラフィックが正常か、または過度に高いかを確認します。トラフィックが高い場合は、低速ログの詳細を表示して、低速 SQL クエリを特定し、最適化します。詳細については、「低速 SQL クエリログの詳細の表示」をご参照ください。
-
その他のパフォーマンスの問題については、「CPU、メモリ、ストレージ、IOPS の高使用率の解決」をご参照ください。
ステップ 4: ネットワークとクライアントの確認
-
ネットワークの確認
pingまたはtelnetコマンドを使用して、RDS インスタンスの内部エンドポイントまたはパブリックエンドポイントへの接続性をテストします。例えば、telnet <RDS インスタンスのパブリックエンドポイント> 3306を実行します。"Connection timed out" または "Unable to connect" エラーが発生した場合、ローカルファイアウォールがポートをブロックしている可能性があります。ローカルファイアウォールの設定を確認してください。 -
クライアントの確認
別のクライアントツールを使用してデータベースに接続し、問題がクライアント固有のものかどうかを判断します。詳細については、次のトピックをご参照ください。
ECS から RDS への内部ネットワークアクセス
ECS インスタンスが内部ネットワーク経由で RDS インスタンスにアクセスできない場合は、「インスタンス接続の問題の解決」をご参照ください。
適用対象
ApsaraDB for RDS