すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:インスタンスの接続問題のトラブルシューティング

最終更新日:Jun 18, 2026

このトピックでは、ApsaraDB RDS for MySQL インスタンスへの接続に関する問題を解決する方法について説明します。

ワークロードを構築およびデバッグする際に、ApsaraDB RDS for MySQL インスタンスに接続できない場合があります。一般的な原因には、ネットワークタイプの不一致や IP アドレスホワイトリストの誤った設定などがあります。このトピックでは、これらの原因とその解決策について説明します。

ネットワークタイプの不一致

  • Elastic Compute Service (ECS) インスタンスが VPC 内にあり、ApsaraDB RDS for MySQL インスタンスがクラシックネットワーク内にある場合

    • 解決策 1 (推奨):ApsaraDB RDS for MySQL インスタンスのネットワークタイプをクラシックネットワークから VPC に切り替えます。詳細については、「ApsaraDB RDS インスタンスのネットワークタイプの変更」をご参照ください。

      説明

      切り替え後、両方のインスタンスが内部ネットワーク経由で通信するには、同じ VPC 内に存在する必要があります。

    • 解決策 2:クラシックネットワーク内に新しい ECS インスタンスを購入します。ECS インスタンスを VPC からクラシックネットワークに移行することはできません。VPC はクラシックネットワークよりも高いセキュリティを提供するため、VPC の使用を推奨します。

    • 解決策 3:ECS インスタンスからパブリックエンドポイントを使用して RDS インスタンスに接続します。この方法は、パフォーマンス、セキュリティ、安定性が劣ります。

  • ECS インスタンスがクラシックネットワーク内にあり、ApsaraDB RDS for MySQL インスタンスが VPC 内にある場合

    • 解決策 1 (推奨):ECS インスタンスをクラシックネットワークから VPC に移行します。

      説明

      移行後、両方のインスタンスが内部ネットワーク経由で通信するには、同じ VPC 内に存在する必要があります。

    • 解決策 2:RDS インスタンスのネットワークタイプを VPC からクラシックネットワークに切り替えます。VPC はクラシックネットワークよりも高いセキュリティを提供するため、VPC の使用を推奨します。

    • 解決策 3:ClassicLink を使用して、クラシックネットワーク内の ECS インスタンスを内部ネットワーク経由で VPC リソースに接続します。

    • 解決策 4:ECS インスタンスからパブリックエンドポイントを使用して RDS インスタンスに接続します。この方法は、パフォーマンス、セキュリティ、安定性が劣ります。

異なる VPC

VPC は Alibaba Cloud 上に構築された論理的に分離されたネットワーク環境です。内部ネットワーク経由で通信するには、ECS インスタンスと ApsaraDB RDS for MySQL インスタンスが同じ VPC 内に存在する必要があります。

異なるリージョン

  • パブリック接続:RDS インスタンスの パブリックエンドポイント を使用して、リージョン間またはアカウント間でインターネット経由で接続します。RDS インスタンスのインバウンドおよびアウトバウンドのインターネットトラフィックに対しては課金されません。

  • プライベート接続:デフォルトでは、ECS インスタンスと RDS インスタンスが異なるリージョンにあるか、異なるアカウントに属している場合、VPC が分離されているため、内部ネットワーク経由で接続することはできません。ただし、VPC ピアリング接続または Cloud Enterprise Network (CEN) を使用して 2 つの VPC を接続し、ECS インスタンスがリージョン間またはアカウント間で RDS インスタンスにアクセスできるようにすることができます。

    • VPC ピアリング接続:この機能は、リージョン間およびアカウント間の VPC 接続をサポートします。コスト効率は高いですが、設定が比較的複雑なため、少数の VPC を持つ単純なシナリオに適しています。

    • CEN:この製品は、リージョン間およびアカウント間の VPC 接続をサポートします。設定は簡単ですが、より高価なため、複数の VPC を持つ複雑なシナリオに適しています。

IP アドレスホワイトリストの誤った設定

名前解決の失敗またはエラー

DNS サーバーの障害やネットワークインターフェイスカード (NIC) の設定変更により、名前解決が失敗したり、不正な IP アドレスが返されたりすることがあります。ping コマンドと telnet コマンドを使用して、RDS インスタンスへの接続をテストします。

ping <domain_name>
telnet <domain_name> <port_number>
            

例:

# ping 成功の例
[root@xxx ~]# ping rm-xxx.mysql.rds.aliyuncs.com
PING rm-xxx.mysql.rds.aliyuncs.com (192.168.0.176) 56(84) bytes of data.
64 bytes from 192.168.0.176 (192.168.0.176): icmp_seq=1 ttl=64 time=0.151 ms
64 bytes from 192.168.0.176 (192.168.0.176): icmp_seq=2 ttl=64 time=0.141 ms
64 bytes from 192.168.0.176 (192.168.0.176): icmp_seq=3 ttl=64 time=0.107 ms
64 bytes from 192.168.0.176 (192.168.0.176): icmp_seq=4 ttl=64 time=0.108 ms
# ping 失敗の例
[root@izbpxxx ~]# ping rm-bp1xxx.mysql.rds.aliyuncs.com
ping: rm-bp1xxx.mysql.rds.aliyuncs.com: Name or service not known
[root@izbpxxx ~]#
# telnet 接続成功の例
[root@xxx ~]# telnet rm-xxx.mysql.rds.aliyuncs.com 3306
Trying 192.168.0.176...
Connected to rm-xxx.mysql.rds.aliyuncs.com.
Escape character is '^]'.
N
5.6.16-logtEkkVNd-0!)\}\4/,/GXfu<mysql_native_password
# telnet 接続失敗の例 (名前解決の失敗)
[root@izbpxxx ~]# telnet rm-bp1xxx.mysql.rds.aliyuncs.com 3306
telnet: rm-bp1xxx.mysql.rds.aliyuncs.com: Name or service not known
rm-bp1xxx.mysql.rds.aliyuncs.com: Host name lookup failure
[root@izbpxxx ~]#

テストに失敗した場合は、NIC 設定ファイルを変更して問題を解決します:

  1. NIC 設定ファイルを変更します:

    vi /etc/sysconfig/network-scripts/<nic_configuration_file_name>
    説明

    <nic_configuration_file_name> は ECS サーバーで使用される NIC の設定ファイル名です。ifconfig コマンドを実行して、ファイル名を確認します。デフォルトは ifcfg-eth0 です。

  2. ファイルの末尾に次の行を追加します:

    DNS1=100.100.XX.XX
    DNS2=100.100.XX.XX
    説明

    DNS1DNS2 が既に設定されている場合は、上記のように IP アドレスを更新してください。

    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    DNS1=100.100.2.136
    DNS2=100.100.2.138
  3. 次のコマンドを実行して、ネットワークサービスを再起動します:

    sudo systemctl restart network
  4. 次のコマンドを実行して、変更が成功したかどうかを確認します:

     cat /etc/resolv.conf
    [root@xxx ~]# cat /etc/resolv.conf
    options timeout:2 attempts:3 rotate single-request-reopen
    : generated_by /usr/sbin/dhclient-script
    nameserver 100.100.2.136
    nameserver 100.100.2.138
    [root@xxx ~]#

ポート接続性のテスト

名前解決が正常に機能している場合は、telnet コマンドを使用して RDS インスタンスへのポートへの接続をテストします。

telnet <RDS_endpoint> <port_number>

たとえば、ApsaraDB RDS for MySQL インスタンスのデフォルトポート 3306 をテストします:

telnet rm-xxxx.mysql.rds.aliyuncs.com 3306
  • 出力に Connected toEscape character is が含まれている場合、ポートがネットワークレイヤーでアクセス可能であることを意味します。

  • Connection timed out エラーは、ネットワークに到達できないか、ファイアウォールによってブロックされていることを示します。次の設定を確認してください:

    • RDS の IP アドレスホワイトリストにクライアントの IP アドレスが含まれていることを確認してください。

    • セキュリティグループのルールが対応するポートでのトラフィックを許可していることを確認してください。

    • クライアントと RDS インスタンスが同じ VPC 内にあることを確認してください。内部エンドポイントは、その VPC 内からのみアクセス可能です。

  • Connection refused エラーは、ポートがリッスンされていないことを示します。RDS インスタンスの実行ステータスとポート設定を確認してください。

ping コマンドと telnet コマンドの両方が正常に実行されても、アプリケーションで依然として接続タイムアウトが発生する場合、問題はネットワークレイヤーではなくアプリケーションレイヤーにあります。tcpdump を使用してパケットをキャプチャし、TCP 3 ウェイハンドシェイクと 4 ウェイハンドシェイクを分析して、タイムアウトの根本原因を特定します。

tcpdump -i eth0 host <RDS_endpoint> -w rds_capture.pcap

パケットキャプチャファイルを分析します:SYN パケットへの応答がない場合は、ネットワークに到達できないか、ブロックされていることを示します。3 ウェイハンドシェイクが成功した後にデータ交換がない場合は、アプリケーションレベルの異常を示します。

インスタンスが「ネットワーク接続を作成中」の状態でスタック

コンソールで、[タスク] ページに移動します。タスクを見つけ、[再試行] または [切り替え時間の変更] をクリックします。詳細については、「タスクセンターの使用」をご参照ください。

FIN パケットへの無応答による読み取りタイムアウト

VPN や専用線などの中間ネットワークを介して ApsaraDB RDS for MySQL インスタンスに接続すると、最初は接続が機能しても、その後タイムアウトすることがあります。これは、クライアントが FIN パケットを送信した後にサーバーが応答しない場合に発生する可能性があります。

この問題をトラブルシューティングするには、次の手順に従います:

  1. ApsaraDB RDS コンソールで、インスタンス詳細ページに移動します。左側のナビゲーションペインで、パラメーターの設定 をクリックし、 wait_timeout および interactive_timeout パラメーターの値を確認します。ApsaraDB RDS for MySQL では、 wait_timeout のデフォルト値は 86,400 秒です。このパラメーターが低い値に設定されている場合、サーバーはアイドル接続を早期に切断します。

  2. VPN や専用線などの中間ネットワークリンクで、パケット損失や高遅延がないか確認してください。telnet <RDS_endpoint> <port_number> コマンドを使用して、RDS インスタンスへのポートへの接続をテストし、ネットワークレイヤーでのアクセス可能性を確認します。

  3. tcpdump または Wireshark を使用して、クライアントとサーバーの両方で同時にパケットをキャプチャします。TCP の FIN/RST パケットのシーケンスを分析して、切断がネットワークトランスポートレイヤーで発生したのか、データベースアプリケーションレイヤーで発生したのかを判断します。

ログを使用したタイムアウトのトラブルシューティング

RDS インスタンスのエラーログと低速ログを確認して、接続タイムアウトの問題を調査します。

  1. ApsaraDB RDS コンソールにログインします。インスタンス ページで、対象のインスタンスを見つけ、その管理ページに移動します。左側のナビゲーションペインで、ログ管理 > エラーログ を選択します。

  2. エラーログで Host is blockedconnect timeoutAborted connection などのレコードを確認し、接続失敗の理由を特定します。

  3. スロークエリログの詳細を選択し、新しい接続をブロックしている可能性のある、長時間実行されているスロークエリがないか確認します。

  4. インスタンスの wait_timeout および interactive_timeout パラメーター設定を確認し、タイムアウトによってアイドル状態の接続が自動的に切断されているかどうかを判断します。