Comment résoudre l'erreur indiquant que le serveur MySQL a disparu (« MySQL server has gone away ») lors de la connexion à l'instance DB MySQL Amazon RDS ?

Lecture de 4 minute(s)
0

J'ai essayé d'interroger une instance de base de données Amazon Relational Database Service (Amazon RDS) qui exécute MySQL, et j'ai reçu l'un des messages d'erreur suivants : « MySQL server has gone away » (Perte de connexion au serveur MySQL) ou « Lost connection to server during query » (Connexion au serveur perdue pendant la requête).

Brève description

Si le serveur a expiré et a interrompu la connexion, vous pourrez recevoir l'une des erreurs suivantes :

  • CR_SERVER_GONE_ERROR : le client n'a pas pu envoyer de question au serveur.
  • CR_SERVER_LOST : le client n'a pas reçu d'erreur lors de l'écriture sur le serveur, mais n'a pas reçu de réponse complète (ou aucune réponse) à la question.

Pour plus d'informations, consultez la section Perte de connexion au serveur MySQL dans la documentation MySQL.

Résolution

Examinez les causes et résolutions possibles suivantes pour ces erreurs :

  • Si une connexion reste inactive pendant une période trop longue, alors il est possible que le client l'arrête de manière incorrecte. Pour résoudre ce problème, vérifiez que les délais d'attente des applications soient plus courts que les délais d'attente MySQL et veillez à ce que vos applications ferment les connexions inactives.
  • En cas de dépassement de délai d'attente d'une connexion, augmentez les délais d'attente MySQL en augmentant la valeur des paramètres wait_timeout et interactive_timeout à l'aide d'un groupe de paramètres personnalisé. Pour plus d'informations, consultez Utilisation des groupes de paramètres de base de données.
  • Si la requête qui génère l'erreur est en cours de récupération d'un jeu de données volumineux, vous devrez peut-être augmenter la valeur du paramètre de taille max_allowed_packet à l'aide d'un groupe de paramètres personnalisé. Pour plus d'informations, veuillez consulter Modification de paramètres dans un groupe de paramètres de bases de données.
    Remarque : pour Amazon Aurora, vous pouvez modifier les paramètres et les définir dans un groupe de paramètres de cluster à appliquer à l'ensemble du niveau du cluster. Le définir dans un groupe de paramètres de base de données applique les paramètres uniquement au niveau de l'instance. Pour la base de données Amazon Lightsail MySQL, vous devez vérifier si les paramètres peuvent être modifiés avant de les modifier à l'aide de l'interface de ligne de commande (CLI). Pour plus d'informations, consultez la section Mise à jour des paramètres de base de données dans Amazon Lightsail. Pour une instance ou un serveur Lightsail, une base de données MySQL locale ou Amazon Elastic Compute Cloud (Amazon EC2) MySQL, vous pouvez définir le paramètre dans le fichier de configuration. Vous pouvez également définir le xxx global, de la même manière que dans un environnement MySQL sur site normal.
  • Si l'erreur se produit uniquement lors de la récupération du jeu de données volumineux, il est possible que le client utilise une MTU importante égale à 9001. Pour résoudre ce problème, réduisez la valeur de la MTU TCP/IP du client. Pour plus d'informations sur la modification de la MTU de votre client, consultez Configuration de la MTU d'une instance.
  • Si la valeur d'un paramètre init_connect ne permet pas l'exécution de celui-ci, les connexions client associées peuvent échouer. Vérifiez que tous les paramètres init_connect sont correctement traités. Vérifiez que les utilisateurs disposent des autorisations EXECUTE pour toutes les procédures référencées en tant que paramètre init_connect.
  • Si toutes les connexions s'interrompent simultanément, vérifiez que les autres connexions fonctionnent toujours lorsque cette erreur se produit. Afin de résoudre ce problème, assurez-vous que l'instance de base de données MySQL ne se bloque pas ou n'échoue pas en consultant les événements Amazon RDS et en vérifiant vos journaux d'erreurs MySQL.

Informations connexes

Connexion à une instance DB exécutant le moteur de base de données MySQL

Modification d'une instance de base de données Amazon RDS