Como resolvo o erro "MySQL server has gone away" ao me conectar a uma instância de banco de dados MySQL do Amazon RDS?

4 minuto de leitura
0

Tentei consultar uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS) que está executando o MySQL e recebi uma das seguintes mensagens de erro: "MySQL server has gone away" ou "Lost connection to server during query."

Breve descrição

Se o servidor atingiu o tempo limite e encerrou a conexão, você poderá receber um dos seguintes erros:

  • CR_SERVER_GONE_ERROR - o cliente não conseguiu enviar uma pergunta ao servidor.
  • CR_SERVER_LOST - o cliente não recebeu um erro ao gravar no servidor, mas o cliente não obteve uma resposta completa (ou qualquer resposta) para a pergunta.

Para obter mais informações, consulte a documentação MySQL server has gone away do MySQL.

Resolução

Veja as seguintes causas e soluções relacionadas para esses erros:

  • Se uma conexão ficar inativa por muito tempo, ela poderá ser encerrada incorretamente pelo cliente. Para resolver esse problema, verifique se os tempos limite de aplicações são menores do que os tempos limite do MySQL e certifique-se de que suas aplicações encerrem as conexões inativas.
  • Se uma conexão atingir o tempo limite, aumente os tempos limite do MySQL aumentando os parâmetros wait_timeout e interactive_timeout usando um grupo de parâmetros personalizado. Para mais informações, consulte Trabalhar com grupos de parâmetros de banco de dados.
  • Se a consulta que está gerando o erro estiver recuperando um grande conjunto de dados, aumente o parâmetro de tamanho max_allowed_packet usando um grupo de parâmetros personalizado. Para obter mais informações, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados.
    Observação: para o Amazon Aurora, é possível modificar os parâmetros e defini-los em um grupo de parâmetros de cluster para aplicar em todo o nível do cluster. Defini-los em um grupo de parâmetros de banco de dados aplica os parâmetros somente no nível da instância. Para o banco de dados MySQL do Amazon Lightsail, é preciso verificar se os parâmetros estão disponíveis para modificação antes de modificá-los usando a interface de linha de comandos (CLI). Para obter mais informações, consulte Atualização dos parâmetros do banco de dados no Amazon Lightsail. Para um banco de dados MySQL local do servidor ou de uma instância do Lightsail, ou para o MySQL do Amazon Elastic Compute Cloud (Amazon EC2), você pode definir os parâmetros no arquivo de configuração. Você também pode definir o xxx global, da mesma forma que ele é definido em um ambiente MySQL local normal.
  • Se o erro ocorrer somente ao retornar grandes conjuntos de dados, o cliente pode estar usando um valor elevado de 9001 MTU. Para resolver esse problema, reduza o valor da MTU TCP/IP do cliente. Para obter informações sobre como alterar o valor da MTU do seu cliente, consulte Configuração da MTU de uma instância.
  • Se algum parâmetro init_connect for definido com um valor que não permita que o parâmetro seja processado, as conexões de clientes associadas poderão falhar. Certifique-se de que todos os parâmetros init_connect sejam processados corretamente. Certifique-se de que os usuários tenham permissões EXECUTE para qualquer procedimento referenciado como um parâmetro init_connect.
  • Se todas as conexões caírem ao mesmo tempo, confirme se outras conexões ainda estão funcionando quando esse problema ocorrer. Para resolver esse problema, verifique se a instância de banco de dados MySQL não está travando ou falhando visualizando os eventos do Amazon RDS e analisando seus logs de erros do MySQL.

Informações relacionadas

Conexão a uma instância de banco de dados executando o mecanismo de banco de dados do MySQL

Modificar uma instância de banco de dados do Amazon RDS