Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Document Database Service/ Perguntas frequentes/ Conexão de base de dados/ O que fazer se não conseguir se conectar a uma instância de BD do RDS?
Atualizado em 2023-11-14 GMT+08:00

O que fazer se não conseguir se conectar a uma instância de BD do RDS?

Possíveis causas

Localize a falha a partir dos seguintes aspectos:

  1. Verifique se a instância de BD está disponível.

    Por exemplo, se o sistema estiver com defeito, uma instância de BD estiver anormal ou uma instância de BD ou uma tabela estiver bloqueada.

  2. (Comum) Verifique se a conexão do cliente está correta.
    1. Baixe o pacote de instalação do banco de dados do site oficial. Para obter detalhes, consulte Como instalar um cliente de MongoDB?
    2. Use um cliente de MongoDB 4.0 ou posterior para se conectar à instância de BD.
    3. 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.
    4. 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.
  3. Verifique o método de conexão.

    Execute os seguintes comandos para ativar e desativar o SSL no console: exemplo:

    • Ativar SSL: ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p--authenticationDatabaseadmin--ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames
    • Desativar SSL: ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin
  4. Verifique se os parâmetros do comando de conexão estão corretos.

    Verifique se os seguintes parâmetros estão configurados corretamente: endereço de conexão, número da porta, nome de usuário, senha e método de conexão.

  5. (Comum) Verifique se a conectividade de rede está normal.
    Conexão de rede privada
    1. Verifique se a instância do ECS e do DDS estão na mesma região e VPC.

      Se o ECS e a instância de banco de dados estiverem em VPCs diferentes, configure uma conexão de emparelhamento de VPC para permitir a comunicação de rede entre as duas VPCs.

    2. Verifique as regras do grupo de segurança.
      1. Para acessar uma instância de cluster em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
    3. No ECS, verifique se a porta da instância de BD pode ser conectada.

    Conexão de rede pública

    1. Verifique as regras do grupo de segurança.
      1. Para acessar uma instância de cluster em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
    2. Verifique as regras de ACL da rede.
    3. Efetue o ping do ECS para a instância de BD na mesma região.

    Acesso entre blocos de CIDR (configuração do mapeamento de endereços IP)

    Se um cliente e uma instância de conjunto de réplicas forem implementados em blocos CIDR diferentes e o cliente não estiver em 192.168.0.0/16, 172.16.0.0/24 ou 10.0.0.0/8, configure o Acesso entre CIDRs para que a instância se comunique com o cliente.

    1. Certifique-se de que o ECS de origem possa se comunicar com o nó da instância. Se a rede for anormal, defina as configurações de rede consultando Conexão de emparelhamento da VPC.
    2. Para obter detalhes sobre como configurar o acesso entre CIDRs, consulte Configuração do acesso entre CIDRs.
  6. (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.

  7. (Comum) Verifique se o disco está cheio.

    Se o uso do disco da instância for muito alto, o status da instância será anormal e a instância não poderá ser conectada.

  8. Verifique se o uso da CPU é muito alto.

    O uso da CPU é alto ou próximo de 100%. Como resultado, o processamento de leitura/gravação de dados é lento, as conexões não podem ser obtidas e os erros são relatados, afetando a execução do serviço.

  9. 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

  1. Verifique se a instância de BD está disponível.

    Método de verificação: verifique se o status da instância do BD está Available no console.

    Possível causa: o sistema do DDS está com defeito, o status da instância é anormal ou a instância ou tabela está bloqueada.

    Solução

    • Se o status da instância do DDS for anormal, entre em contato com a equipe de O&M.
    • Se o sistema estiver com defeito ou a instância ou tabela estiver bloqueada, reinicie a instância. Para obter detalhes, consulte Reiniciação de uma instância.
    Figura 1 Verificar o status da instância
  2. Verifique se a conexão do cliente está correta.

    Recomendamos que você use um cliente de MongoDB da versão 4.0 ou posterior para se conectar à instância. Para obter detalhes sobre como instalar um cliente de MongoDB, consulte Como instalar um cliente de MongoDB?

    O seguinte usa a conexão a um cluster como exemplo:

    1. Para obter detalhes sobre como se conectar a uma instância de BD em uma rede privada, consulte Conexão a uma instância de BD em redes privadas.
    2. Para obter detalhes sobre como se conectar a uma instância de BD em uma rede pública, consulte Conexão a uma instância de BD em redes públicas.
    Tabela 1 Métodos de conexão

    Método

    Cenário

    Rede privada

    O DDS fornece um endereço IP privado 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, é recomendável conectar-se ao ECS e à instância de BD por meio de um endereço IP privado.

    Rede pública

    Se não for possível acessar a instância de BD por meio de um endereço IP privado, é aconselhável vincular um EIP à instância de BD e, em seguida, conectar-se à instância de BD por meio do EIP.

    Para obter detalhes de preços do EIP, consulte Detalhes de cobrança do EIP.

  3. Verifique o método de conexão.
    1. Conexão SSL é recomendada. Ative o SSL na página Connections e carregue o certificado no ECS.
      ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p--authenticationDatabaseadmin--ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames
      Figura 2 Ativar SSL
    2. Conexão não criptografada: desative SSL na página Connections.

      ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin

      Figura 3 Desativar SSL
  4. Verifique se os parâmetros no comando de conexão estão corretos.

    Certifique-se de que o endereço de conexão, a porta, o nome de usuário e a senha estejam corretos e tente se conectar à instância de banco de dados novamente no modo SSL.

    Exemplo de conexão de rede privada:./mongo mongodb://rwuser:<password>@<DB_HOST>:<DB_PORT>,<DB_HOST>:<DB_PORT>/test?authSource=admin --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames

    • Endereço da conexão

      As informações de conexão podem ser obtidas na coluna Address na página Instances.

      Figura 4 Endereço da conexão
    • Porta do banco de dados

      Na guia Private Connection da página Connections, obtenha a porta do banco de dados no campo Database Port.

    • Nome de usuário e senha

      Se a senha do administrador raiz estiver incorreta ou se você esquecer a senha, redefina a senha do administrador.

    • Certificado

      Obtenha o nome do certificado SSL no diretório em que o comando é executado.

    Exemplo de conexão de rede pública SSL:./mongo mongodb://rwuser:<password>@<DB_HOST>:<DB_PORT>/test?authSource=admin --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames

    • Endereço da conexão

      Clique no nome da instância. Na guia Public Connection da página Connections, obtenha o endereço de conexão pública no campo Public Network Connection Address.

    • Porta do banco de dados

      Na guia Public Connection da página Connections, obtenha a porta do banco de dados no campo Database Port.

    • Nome do usuário e senha

      Se a senha do administrador raiz estiver incorreta ou se você esquecer a senha, redefina a senha do administrador.

    • Certificado

      Obtenha o nome do certificado SSL no diretório em que o comando é executado.

  5. Verifique se a conexão de rede está normal.
    Conexão de rede privada
    1. Verifique se a instância do ECS e do DDS 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 estiverem em VPCs diferentes, configure uma conexão de emparelhamento de VPC para permitir a comunicação de rede entre as duas VPCs.
    2. 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.

    3. No ECS, verifique se a porta da instância de BD pode ser conectada.
      telnet <DB instance address> {8635}
      • Se a conexão for normal, a rede é normal.
      • Se a conexão falhar, envie um para o atendimento ao cliente para obter assistência.

    Conexão de rede pública

    1. 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.

    2. Verifique as regras de ACL da rede.
      1. Vá para a Check network ACL rules..
      2. Verifique se a NIC vinculada ao EIP está na sub-rede associada à ACL de rede.
      3. Verifique se a ACL de rede está habilitada.

        Se sim, adicione uma regra ICMP para permitir o tráfego.

      A regra de ACL de rede padrão nega todos os pacotes de entrada e de saída. Depois que a ACL da rede é desabilitada, a regra padrão ainda entra em vigor.

    3. Efetue o ping do ECS para a instância de BD na mesma região.

      Se você não conseguir executar o ping do EIP no ECS original, selecione outro ECS na mesma região e faça o ping do EIP novamente. Se o ping for bem-sucedido, a rede é normal. Se o ping falhou, .

    Acesso entre blocos de CIDR (configuração do mapeamento de endereços IP)

    Se um cliente e uma instância de conjunto de réplicas forem implementados em blocos CIDR diferentes e o cliente não estiver em 192.168.0.0/16, 172.16.0.0/24 ou 10.0.0.0/8, configure o Acesso entre CIDRs para que a instância se comunique com o cliente.

    1. Certifique-se de que o ECS de origem possa se comunicar com o nó da instância. Se a rede for anormal, defina as configurações de rede consultando Conexão de emparelhamento da VPC.
    2. Para obter detalhes sobre como configurar o acesso entre CIDRs, consulte Configuração do acesso entre CIDRs.
  6. Verifique se o número de conexões com a instância de banco de dados atinge o limite superior.
    1. Verifique se o número de conexões com a instância de banco de dados atingiu o limite superior. Para obter detalhes, consulte Como consultar e limitar o número de conexões?

      Se o número de conexões de instância atingir o limite superior, consulte O que fazer se o número de conexões de uma instância atingir o máximo?

    2. 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 que você defina políticas de alarme para identificar riscos antecipadamente se algum alarme for gerado.
  7. Verifique se o disco está cheio.

    Método de verificação: veja o uso do espaço de armazenamento no console de gerenciamento ou no Cloud Eye.

    • No console de gerenciamento

      Localize a instância de destino 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 5 Espaço de armazenamento
    • No Cloud Eye

      Localize a instância de destino e clique em View Metric na coluna Operation. Na página exibida, visualize o uso do espaço de armazenamento.

    Possível causa: quando o status da instância é Storage full, a instância precisa preservar pelo menos 15% de sua capacidade para funcionar corretamente.

    Solução:

    • À medida que os dados do serviço crescem, o espaço de armazenamento original pode ser insuficiente. Você é aconselhado a ampliar o espaço de armazenamento. Para obter detalhes, consulte Expansão de espaço de armazenamento.
    • Processe arquivos de dados expirados em tempo hábil.
    • 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 que você defina políticas de alarme para identificar riscos antecipadamente se algum alarme for gerado.
  8. Verifique se o uso da CPU é muito alto.

    O uso da CPU é alto ou próximo de 100%. Como resultado, o processamento de leitura/gravação de dados é lento, as conexões não podem ser obtidas e os erros são relatados, afetando a execução do serviço.

    Solução: para obter detalhes, consulte O que fazer se o uso da CPU for anormalmente alto?

  9. Exiba mensagens de erro de conexão comuns.
    • Mensagem de falha de conexão: network error while attempting to run command 'isMaster'

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:

      ./mongo --host 192.168.168.182 --port 8635 -u rwuser -p xxxxxxxxxx --authenticationDatabase admin

      Figura 6 Falhou na conexão

      Para obter detalhes sobre como corrigir a falha, consulte Mensagem de falha de conexão: network error while attempting to run command 'isMaster'.

    • Mensagens de falha de conexão: No route to host e connection attempt failed.

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:

      mongo --host 192.168.1.6 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames

      Mensagem de erro:

      MongoDB shell version v3.4.17
      connecting to: mongodb://192.168.1.6:8635/
      2019-09-19T09:38:36.954+0800 W NETWORK  [thread1] Failed to connect to 192.168.1.6:8635, in(checking socket for error after poll), reason: No route to host
      2019-09-19T09:38:36.954+0800 E QUERY    [thread1] Error: couldn't connect to server 192.168.1.6:8635, connection attempt failed :
      connect@src/mongo/shell/mongo.js:240:13
      @(connect):1:6
      exception: connect failed

      Para obter detalhes sobre como corrigir a falha, consulte Mensagens de falha de conexão: "No route to host" e "connection attempt failed".

    • Mensagens de falha de conexão: No route to host e connection attempt failed

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:

      mongo --host 192.168.168.116 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames

      Mensagem de erro:

      MongoDB shell version v3.4.17
      connecting to: mongodb://192.168.168.116:8635/
      2019-09-19T09:39:24.306+0800 W NETWORK  [thread1] The server certificate does not match the host name. Hostname: 192.168.168.116 does not match CN: 172.16.2.65
      MongoDB server version: 4.0.3
      WARNING: shell and server versions do not match
      2019-09-19T09:39:24.329+0800 E QUERY    [thread1] Error: Authentication failed. :
      DB.prototype._authOrThrow@src/mongo/shell/db.js:1461:20
      @(auth):6:1
      @(auth):1:2
      exception: login failed

      Para obter detalhes sobre como corrigir a falha, consulte Mensagens de falha de conexão: "No route to host" e "connection attempt failed".

    • Mensagem de falha de conexão: couldn't connect to server.

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:

      mongo --host 192.168.64.201 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames

      Mensagem de erro:

      MongoDB shell version v3.4.17
      connecting to: mongodb://192.168.64.201:8635/
      2019-09-19T09:45:48.168+0800 W NETWORK  [thread1] Failed to connect to 192.168.64.201:8635 after 5000ms milliseconds, giving up.
      2019-09-19T09:45:48.168+0800 E QUERY    [thread1] Error: couldn't connect to server 192.168.64.201:8635, connection attempt failed :
      connect@src/mongo/shell/mongo.js:240:13
      @(connect):1:6
      exception: connect failed

      Para obter detalhes sobre como corrigir a falha, consulte Mensagem de falha de conexão: "couldn't connect to server".

    • Mensagem de falha de conexão: cannot list multiple servers in URL without 'replicaSet' option

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância do conjunto de réplicas do DDS:

      ./mongo mongodb://rwuser:xxxxxxxxxxx@192.168.168.116:8635,192.168.200.147:8635/test?authSource=admin&replicaSet=replica

      Mensagem de erro:

      FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option try 'mongo --help' for more information.

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS compatível com MongoDB 3.4:

      mongo "mongodb://rwuser:xxxxxxxxx@192.168.95.167:8635,192.168.92.43:8635/test?authSource=admin"

      Mensagem de erro:

      FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option
      try 'mongo --help' for more information.

      Para obter detalhes, consulte Mensagem de falha de conexão: cannot list multiple servers in URL without 'replicaSet' option.

    • Mensagem de falha de conexão: Timeout while receiving message.

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS por meio do driver Java:

      Mensagem de erro:

      org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

      Para obter detalhes sobre como corrigir a falha, consulte Mensagem de falha de conexão: "Timeout while receiving message".

    • Mensagens de falha de conexão: exception: login failed e U_STRINGPREP_PROHIBITED_ERROR

      Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:

      ./mongo "mongodb://rwuser:xxxxxx@192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica"

      Mensagem de erro:

      MongoDB shell version v4.0.3
      connecting to: mongodb://192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica
      2021-11-05T05:52:53.717+0000 I NETWORK  [js] Starting new replica set monitor for replica/192.168.0.45:8635,192.168.0.96:8635
      2021-11-05T05:52:53.718+0000 I NETWORK  [ReplicaSetMonitor-TaskExecutor] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 5 second timeout)
      2021-11-05T05:52:53.718+0000 I NETWORK  [js] Successfully connected to 192.168.0.96:8635 (1 connections now open to 192.168.0.96:8635 with a 5 second timeout)
      Implicit session: session { "id" : UUID("5945d2a5-8275-4e3c-b06f-632f062a2ead") }
      MongoDB server version: 4.0.3
      2021-11-05T05:52:53.722+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.722+0000 I NETWORK  [js] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 0 second timeout)
      2021-11-05T05:52:53.723+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.724+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.725+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.725+0000 E QUERY    [js] Error: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR :
      DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
      @(auth):6:1
      @(auth):1:2
      exception: login failed

      Para obter detalhes sobre como corrigir a falha, consulte Mensagens de falha de conexão: exception: login failed e U_STRINGPREP_PROHIBITED_ERROR.

  10. Se o problema persistir, envie um para entrar em contato com o atendimento ao cliente da Huawei Cloud para obter assistência.