O que fazer se não conseguir me conectar a uma instância de BD do RDS?
Possíveis causas
Tente o seguinte:
- Verifique se a instância de BD está disponível.
Por exemplo, se o sistema estiver com defeito, a instância de BD estiver anormal ou a instância de BD ou a tabela estiver bloqueada.
- (Comum) Verifique se a conexão do cliente está correta.
- Se você se conectar a uma instância de BD em uma rede privada, verifique se a instância de BD e o ECS estão na mesma região e VPC.
- Se você se conectar a uma instância de BD em uma rede pública, vincule um EIP à instância de BD e, em seguida, conecte-se à instância de BD por meio do EIP.
- Verifique o método de conexão.
Execute um dos seguintes comandos de exemplo para ativar ou desativar o SSL:
- SSL ativado: mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
- SSL desativado: mysql -h 172.16.0.31 -P 3306 -u root -p
- Verifique se os parâmetros do comando de conexão estão corretos.
Por exemplo, verifique se os seguintes parâmetros estão configurados corretamente: connection address, port number, username, password e connection method.
- (Comum) Verifique se a conectividade de rede está normal
Para uma conexão de rede privada:
- Verifique se o ECS e a instância do BD estão na mesma região e VPC.
- Verifique as regras do grupo de segurança.
Para acessar instâncias de BD em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
- No ECS, verifique se a porta da instância de BD pode ser conectada.
Para uma conexão de rede pública:
- Verifique as regras do grupo de segurança.
Para acessar instâncias de BD em um grupo de segurança de uma rede pública, adicione uma regra de entrada para o grupo de segurança.
- Verifique as regras de ACL da rede.
- Faça o ping dos ECSs na mesma região para a instância de BD.
- (Comum) Verifique se o número de conexões com a instância de BD atinge o limite superior.
Se houver um número excessivo de conexões de banco de dados, as aplicações podem não ser conectadas.
- (Comum) Verifique se a instância de BD está no estado de armazenamento completo.
Se a instância de BD estiver no estado Storage full, o desempenho de leitura e gravação de dados será afetado.
- Exiba as mensagens de erro de conexão comuns
Encontre soluções correspondentes com base em mensagens de erro de conexão.
Localização de falhas
- Verifique se a instância de BD está disponível.
Verifique se a instância de BD está no estado Available.
Possível causa: o sistema do RDS está com defeito, a instância de BD está anormal ou a instância de BD ou uma tabela está bloqueada.
Solução: se a instância de BD for anormal, reinicialize-a.
Figura 2 Verificar o status da instância de BD
- Verifique se a conexão do cliente está correta.
Instale um cliente de mecanismo cuja versão seja pelo menos tão nova quanto a versão da instância de BD.
Para obter detalhes sobre como se conectar a uma instância de BD em uma rede privada ou pública, consulte Um servidor externo pode acessar o banco de dados do RDS?
Tabela 1 Modelo de conexão Método de conexão
Cenário
Exemplo
Rede privada
Um endereço IP privado é fornecido por padrão.
Se suas aplicações forem implementadas em um ECS que esteja na mesma região e VPC que a instância de BD, conecte-se ao ECS e à instância de BD por meio de um endereço IP privado.
RDS for MySQL:
mysql -h <private IP address> -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
Rede pública
Se não for possível acessar a instância de BD por meio de um endereço IP privado, vincule um EIP à instância de BD e, em seguida, conecte-se à instância de BD por meio do EIP.
Para obter detalhes de preços do EIP, consulte Detalhes de cobrança do EIP.
RDS for MySQL:
mysql -h <EIP> -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
- Verifique o método de conexão.
- Conexão SSL é recomendada. Ative o SSL na página Connectivity & Security e carregue o certificado no ECS.
mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
Figura 3 Ativar SSL
- Conexão comum: desative o SSL na página Basic Information.
mysql -h 172.16.0.31 -P 3306 -u root -p
- Conexão SSL é recomendada. Ative o SSL na página Connectivity & Security e carregue o certificado no ECS.
- Verifique os parâmetros no comando usado para conectar.
Certifique-se de que o endereço de conexão, a porta, o nome de usuário e a senha e o método de conexão SSL estejam corretos e tente se conectar à instância de BD novamente.
Se você usar uma conexão privada com SSL ativado, execute mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem.
- Endereço IP
Na guia Private Connection da página Connectivity & Security, obtenha o endereço IP flutuante na área Connection Information.
Figura 4 Endereço IP flutuante
- Porta do banco de dados
Na guia Private Connection da página Connectivity & Security, obtenha a porta do banco de dados na área Connection Information.
- Credenciais de logon raiz
- Certificado
Obtenha o nome do certificado SSL no diretório em que o comando é executado.
Se você usar uma conexão pública com SSL ativado, execute o seguinte comando de exemplo: mysql -h EIP -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
- Endereço IP
Na guia Public Connection da página Connectivity & Security, obtenha o EIP na área Connection Information.
Figura 5 EIP
- Porta do banco de dados
Na guia Public Connection da página Connectivity & Security, obtenha a porta do banco de dados na área Connection Information.
- Credenciais de logon raiz
- Certificado
Obtenha o nome do certificado SSL no diretório em que o comando é executado.
- Endereço IP
- Verifique a conexão de rede.
Conexão de rede privada
- Verifique se o ECS e a instância do BD estão na mesma região e VPC.
- Se o ECS e a instância de BD estiverem em regiões diferentes, eles não poderão se comunicar entre si. Selecione uma região próxima à sua área de serviço para reduzir a latência da rede e obter acesso mais rápido.
- Se o ECS e a instância de BD do RDS estiverem em VPCs diferentes, consulte O que fazer se o ECS e o RDS forem implementados em VPCs diferentes e não puderem se comunicar entre si?
Figura 6 Verificar a VPC de um ECS
Figura 7 Verificar a VPC de uma instância do RDS
- Verifique as regras do grupo de segurança.
- Se Destination não for 0.0.0.0/0 e Protocol & Port não for All na página Outbound Rules do ECS, adicione o endereço IP flutuante e a porta da instância do RDS às regras de saída.
Figura 8 Grupo de segurança do ECS
- Se Source não for 0.0.0.0/0 e o Protocol & Port não for All na página Inbound Rules da instância do RDS, adicione o endereço IP e a porta do ECS às regras de entrada.
Figura 9 Grupo de segurança da instância do RDS
- Se Destination não for 0.0.0.0/0 e Protocol & Port não for All na página Outbound Rules do ECS, adicione o endereço IP flutuante e a porta da instância do RDS às regras de saída.
- No ECS, verifique se a porta da instância de BD pode ser conectada.
telnet <IP address> <port number>
- Se a conexão for normal, a rede é normal.
- Se a conexão falhar, crie um tíquete de serviço para entrar em contato com o atendimento ao cliente para obter assistência.
Conexão de rede pública
- Verifique as regras do grupo de segurança.
- Se Destination não for 0.0.0.0/0 e Protocol & Port não for All na página Outbound Rules do ECS, adicione o EIP e a porta da instância do RDS às regras de saída.
Figura 10 Grupo de segurança do ECS
- Se Source não for 0.0.0.0/0 e o Protocol & Port não for All na página Inbound Rules da instância do RDS, adicione o endereço IP e a porta do ECS às regras de entrada.
Figura 11 Grupo de segurança da instância do RDS
- Se Destination não for 0.0.0.0/0 e Protocol & Port não for All na página Outbound Rules do ECS, adicione o EIP e a porta da instância do RDS às regras de saída.
- Verifique as regras de ACL de rede.
- Vá para ACLs de rede.
- Verifique se a NIC vinculada ao EIP está na sub-rede associada à ACL de rede.
- Verifique se a ACL de rede está habilitada.
A regra de ACL de rede padrão nega todos os pacotes de entrada e de saída. Essa regra padrão ainda é aplicada mesmo se a ACL da rede estiver desativada.
- Faça o ping da instância de BD em um ECS na mesma região.
Se você não conseguir executar o ping do EIP da instância do RDS a partir de um ECS, tente fazer o ping a partir de outro ECS na mesma região. Se o EIP pode ser pingado, a rede é normal. Nesse caso, crie um tíquete de serviço para entrar em contato com o atendimento ao cliente.
- Verifique se o ECS e a instância do BD estão na mesma região e VPC.
- Verifique se há muitas conexões com a instância de BD.
Método de verificação:
- Execute show variables like '%max%connections%'; para exibir o número de conexões de instância.
- max_connections: o número máximo de clientes que podem ser conectados ao mesmo tempo. Se este parâmetro for definido como default, o número máximo de clientes dependerá da quantidade de memória configurada. Para mais detalhes, consulte Qual é o número máximo de conexões com uma instância de BD do RDS?.
- max_user_connections: o número máximo de conexões simultâneas permitidas para uma conta específica do RDS for MySQL.
- Verifique se o total de conexões e conexões ativas atuais atingiram os limites superiores consultando Exibição de métricas de monitoramento. Determine se as conexões devem ser liberadas.
Possível causa: se houver muitas conexões de banco de dados, talvez as aplicações não consigam se conectar e backups completos e incrementais podem falhar, afetando os serviços.
Solução:- Verifique se as aplicações estão conectadas, otimize as conexões e libere conexões desnecessárias.
- Se esse parâmetro for definido como default, você poderá escalar a instância de BD para definir max_connections como um valor maior. Para obter detalhes, consulte Alteração as especificações da instância de BD.
- Verifique se alguma métrica é anormal e se algum alarme é gerado no console do Cloud Eye. O Cloud Eye monitora as métricas do banco de dados, como o uso da CPU, o uso da memória, o uso do espaço de armazenamento e as conexões do banco de dados, e permite definir políticas de alarme para identificar riscos antecipadamente se algum alarme for gerado. Para obter detalhes sobre as métricas de monitoramento suportadas, consulte Configuração de métricas exibidas.
- Execute show variables like '%max%connections%'; para exibir o número de conexões de instância.
- Verifique se a instância de banco de dados está no estado Storage full.
Método de verificação: visualize o uso do espaço de armazenamento no console de gerenciamento ou no Cloud Eye.
- No console do RDS
Localize uma instância de BD e clique em seu nome para ir para a página Basic Information. Na área Storage Space, visualize o uso do espaço de armazenamento.
Figura 12 Uso de espaço do armazenamento
- No Cloud Eye
Localize uma instância de BD e clique em View Metric na coluna Operation. Na página exibida, visualize o uso do espaço de armazenamento.
Possível causa e soluções: consulte O que fazer se uma instância de BD do RDS for anormal devido ao espaço de armazenamento total?
- No console do RDS
- Exiba mensagens de erro de conexão comuns.
Quando você executa comandos para se conectar a uma instância de BD, a compreensão das mensagens de erro pode ajudar:
- ERROR 2013: Lost connection to MySQL server during query
Se os valores de wait_timeout e interactive_timeout forem muito pequenos, o cliente do RDS for MySQL desconectará automaticamente a conexão vazia de tempo limite. Para obter detalhes, consulte Cliente de MySQL automaticamente desconectado de uma instância de BD.
- ERROR 1045 (28000): Access denied for user 'root'@'192.168.0.30' (using password: YES)
Verifique se a senha está correta, se o ECS tem permissão para se conectar à instância de BD e se o cliente do RDS for MySQL pode executar ping no endereço IP flutuante da instância de BD. Para obter detalhes, consulte Instância de BD do RDS for MySQL inacessível.
- ERROR 1226 (42000): User 'test' has exceeded the 'max_user_connections' resource (current value:10)
Verifique se o número de conexões com a instância de BD é limitado. Para obter detalhes, consulte Instância de BD do MySQL inacessível.
- ERROR 1129 (HY000): Host '192.168.0.111' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Verifique se o número de tentativas de conexão do clientes de RDS for MySQL com falha (não causadas por senhas incorretas) excede o valor de max_connection_errors. Para obter detalhes, consulte Instância de BD do RDS for MySQL inacessível.
- [Warning] Access denied for user 'username'@'yourIp' (using password: NO)
Se esta mensagem de erro for exibida quando você tentar se conectar a uma instância de BD do RDS for MySQL ou RDS for PostgreSQL, verifique se o nome de usuário ou a senha estão corretos.
- [Warning] Access denied for user 'username'@'yourIp' (using password: YES)
Se esta mensagem de erro for exibida quando você tentar se conectar a uma instância de do RDS for MySQL ou RDS for PostgreSQL, verifique se o nome de usuário ou a senha estão corretos.
- Falha no logon para o usuário 'username'
Se esta mensagem de erro é indicada quando você tenta conectar a uma instância de BD do RDS for SQL Server, verifique se o nome de usuário ou a senha estão corretos.
- ERROR 2013: Lost connection to MySQL server during query
- Se o problema persistir, crie um tíquete de serviço.