Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Troubleshoot instance connection issues

Última atualização: Jun 26, 2026

Este tópico descreve como resolver problemas de conexão com uma instância ApsaraDB RDS for MySQL.

Durante a criação e depuração de cargas de trabalho, podem ocorrer falhas de conexão com uma instância ApsaraDB RDS for MySQL. As causas comuns incluem tipos de rede incompatíveis e configurações incorretas na lista de permissões de endereços IP. Este tópico aborda essas causas e suas respectivas soluções.

Tipos de rede incompatíveis

  • A instância ECS está em uma VPC e a instância ApsaraDB RDS for MySQL está na rede clássica

    • Solução 1 (Recomendada): Altere o tipo de rede da instância ApsaraDB RDS for MySQL de rede clássica para VPC. Para mais informações, consulte Alterar o tipo de rede de uma instância ApsaraDB RDS.

      Nota

      Após a alteração, ambas as instâncias devem estar na mesma VPC para se comunicarem pela rede interna.

    • Solução 2: Adquira uma nova instância ECS na rede clássica. Não é possível migrar instâncias ECS de uma VPC para a rede clássica. Recomendamos o uso de VPC, pois oferece maior segurança que a rede clássica.

    • Solução 3: Conecte-se à instância RDS a partir da instância ECS usando seu endpoint público. Esse método apresenta baixo desempenho, segurança e estabilidade reduzidos.

  • A instância ECS está na rede clássica e a instância ApsaraDB RDS for MySQL está em uma VPC

    • Solução 1 (Recomendada): Migre a instância ECS da rede clássica para uma VPC.

      Nota

      Após a migração, ambas as instâncias devem estar na mesma VPC para se comunicarem pela rede interna.

    • Solução 2: Altere o tipo de rede da instância RDS de VPC para rede clássica. Recomendamos o uso de VPC, pois oferece maior segurança que a rede clássica.

    • Solução 3: Utilize o ClassicLink para conectar a instância ECS na rede clássica aos recursos da VPC por meio de uma rede interna.

    • Solução 4: Conecte-se à instância RDS a partir da instância ECS usando seu endpoint público. Esse método apresenta baixo desempenho, segurança e estabilidade reduzidos.

VPCs diferentes

As VPCs são ambientes de rede logicamente isolados no Alibaba Cloud. Para comunicação via rede interna, suas instâncias ECS e ApsaraDB RDS for MySQL devem estar na mesma VPC.

Regiões diferentes

  • Conexão pública: Use o endpoint público da instância RDS para se conectar entre regiões ou contas pela internet. Não há cobrança pelo tráfego de entrada e saída da internet da instância RDS.

  • Conexão privada: Por padrão, se uma instância ECS e uma instância RDS estiverem em regiões diferentes ou pertencerem a contas diferentes, elas não poderão se conectar via rede interna porque suas VPCs estão isoladas. No entanto, é possível usar uma conexão de peering de VPC ou a Cloud Enterprise Network (CEN) para conectar as duas VPCs, permitindo que a instância ECS acesse a instância RDS entre regiões ou contas.

    • Conexão de peering de VPC: Este recurso suporta conexões de VPC entre regiões e entre contas. É econômico, mas relativamente complexo de configurar, sendo adequado para cenários simples com poucas VPCs.

    • Cloud Enterprise Network (CEN): Este produto suporta conexões de VPC entre regiões e entre contas. É fácil de configurar, porém mais caro, sendo indicado para cenários complexos com múltiplas VPCs.

Configurações incorretas na lista de permissões de endereços IP

Falha ou erro na resolução de nome de domínio

Uma falha no servidor DNS ou uma alteração na configuração da placa de interface de rede (NIC) pode causar falha na resolução de nomes de domínio ou retornar um endereço IP incorreto. Use os comandos ping e telnet para testar a conectividade com sua instância RDS.

ping <domain_name>
telnet <domain_name> <port_number>
            

Exemplos

# Example of a successful 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
# Example of a failed ping
[root@izbpxxx ~]# ping rm-bp1xxx.mysql.rds.aliyuncs.com
ping: rm-bp1xxx.mysql.rds.aliyuncs.com: Name or service not known
[root@izbpxxx ~]#
# Example of a successful telnet connection
[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
# Example of a failed telnet connection (domain name resolution failure)
[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 ~]#

Se o teste falhar, modifique o arquivo de configuração da NIC para resolver o problema:

  1. Modifique o arquivo de configuração da NIC.

    vi /etc/sysconfig/network-scripts/<nic_configuration_file_name>
    Nota

    O <nic_configuration_file_name> corresponde à NIC usada pelo servidor ECS. Execute o comando ifconfig para visualizar o sufixo do nome do arquivo. O padrão é ifcfg-eth0.

  2. Adicione as seguintes linhas ao final do arquivo:

    DNS1=100.100.XX.XX
    DNS2=100.100.XX.XX
    Nota

    Se DNS1 e DNS2 já estiverem configurados, atualize seus endereços IP conforme mostrado acima.

    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    DNS1=100.100.2.136
    DNS2=100.100.2.138
  3. Execute o seguinte comando para reiniciar o serviço de rede:

    sudo systemctl restart network
  4. Execute o seguinte comando para verificar se a modificação foi bem-sucedida:

     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 ~]#

Testar conectividade da porta

Se a resolução de nome de domínio estiver funcionando corretamente, use o comando telnet para testar a conectividade da porta com a instância RDS.

telnet <RDS_endpoint> <port_number>

Por exemplo, teste a porta padrão 3306 de uma instância ApsaraDB RDS for MySQL:

telnet rm-xxxx.mysql.rds.aliyuncs.com 3306
  • Uma saída contendo Connected to e Escape character is indica que a porta está acessível na camada de rede.

  • Um erro Connection timed out indica que a rede está inacessível ou bloqueada por um firewall. Verifique as seguintes configurações:

    • Verifique se a lista de permissões de IP do RDS inclui o endereço IP do cliente.

    • Verifique se as regras do grupo de segurança permitem tráfego na porta correspondente.

    • Verifique se o cliente e a instância RDS estão na mesma VPC. Um endpoint interno só é acessível dentro de sua própria VPC.

  • Um erro Connection refused indica que a porta não está sendo monitorada. Verifique o status de execução e a configuração da porta da instância RDS.

Se os comandos ping e telnet forem executados com êxito, mas sua aplicação ainda relatar tempo limite de conexão, o problema estará na camada de aplicação, não na camada de rede. Use o tcpdump para capturar pacotes e analisar o handshake triplo TCP e o handshake quádruplo para identificar a causa raiz do tempo limite.

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

Analise o arquivo de captura de pacotes: a ausência de resposta a um pacote SYN indica que a rede está inacessível ou bloqueada. A falta de troca de dados após um handshake triplo bem-sucedido indica uma anomalia no nível da aplicação.

Instância travada no estado Creating Network Connection****

No console, acesse a página Tasks. Localize a tarefa e clique em Retry ou Modify switching time. Para mais informações, consulte Usar o Task Center.

Tempo limite de leitura por falta de resposta ao pacote FIN

Ao conectar-se a uma instância ApsaraDB RDS for MySQL através de uma rede intermediária, como VPN ou linha dedicada, a conexão pode funcionar inicialmente e depois atingir o tempo limite. Isso pode acontecer se o servidor falhar em responder após o cliente enviar um pacote FIN.

Siga estas etapas para solucionar o problema:

  1. No console do ApsaraDB RDS, acesse a página de detalhes da instância. No painel de navegação à esquerda, clique em Parameters e verifique os valores dos parâmetros wait_timeout e interactive_timeout. No ApsaraDB RDS for MySQL, o valor padrão de wait_timeout é 86.400 segundos. Se esse parâmetro estiver definido com um valor baixo, o servidor fechará conexões ociosas prematuramente.

  2. Verifique se há perda de pacotes ou alta latência no link de rede intermediário, como a VPN ou linha dedicada. Use o comando telnet <RDS_endpoint> <port_number> para testar a conectividade da porta com a instância RDS e confirmar a acessibilidade na camada de rede.

  3. Use tcpdump ou Wireshark para capturar pacotes simultaneamente no cliente e no servidor. Analise a sequência de pacotes TCP FIN/RST para determinar se a desconexão ocorre na camada de transporte de rede ou na camada de aplicação do banco de dados.

Solução de problemas de tempo limite com logs

Investigue problemas de tempo limite de conexão verificando o log de erros e o log de consultas lentas da sua instância RDS.

  1. Faça login no console do ApsaraDB RDS. Na página Instances, localize a instância desejada e acesse sua página de gerenciamento. No painel de navegação à esquerda, escolha Logs > Error Logs.

  2. Verifique no log de erros registros como Host is blocked, connect timeout ou Aborted connection para identificar o motivo da falha de conexão.

  3. Escolha Slow Query Logs e verifique se há consultas lentas de longa duração que possam estar bloqueando novas conexões.

  4. Verifique as configurações dos parâmetros wait_timeout e interactive_timeout da instância para determinar se os tempos limite estão desconectando automaticamente as conexões ociosas.