Direkt zum Inhalt

Wie behebe ich den Fehler „MySQL server has gone away“, wenn ich eine Verbindung zu meiner DB-Instance von Amazon RDS MySQL herstelle?

Lesedauer: 3 Minute
0

Ich habe versucht, eine DB-Instance des Amazon Relational Database Service (Amazon RDS) abzufragen, auf der MySQL ausgeführt wird, und habe eine der folgenden Fehlermeldungen erhalten: „MySQL server has gone away“ oder „Lost connection to server during query.“

Kurzbeschreibung

Wenn beim Server ein Timeout aufgetreten ist und die Verbindung geschlossen wurde, erhältst du möglicherweise eine der folgenden Fehlermeldungen:

  • CR_SERVER_GONE_ERROR – Der Client konnte keine Frage an den Server senden.
  • CR_SERVER_LOST – Der Client hat beim Schreiben auf den Server keine Fehlermeldung erhalten, aber er hat keine vollständige Antwort (oder irgendeine Antwort) auf die Frage erhalten.

Weitere Informationen findest du in der MySQL-Dokumentation für MySQL server has gone away.

Behebung

Sieh dir die folgenden Ursachen und zugehörigen Lösungen für diese Fehler an:

  • Wenn eine Verbindung zu lange inaktiv ist, wird die Verbindung vom Client möglicherweise fälschlicherweise beendet. Um dieses Problem zu beheben, stelle sicher, dass die Anwendungs-Timeouts kürzer sind als die MySQL-Timeouts, und stelle sicher, dass die Anwendungen inaktive Verbindungen schließen.
  • Wenn bei einer Verbindung ein Timeout auftritt, erhöhe die Timeouts für MySQL, indem du die Parameter wait_timeout und interactive_timeout mithilfe einer benutzerdefinierten Parametergruppe erhöhst. Weitere Informationen findest du unter Arbeiten mit DB-Parametergruppen.
  • Wenn die Abfrage, die den Fehler generiert, einen großen Datensatz abruft, erhöhe den Größenparameter max_allowed_packet mithilfe einer benutzerdefinierten Parametergruppe. Weitere Informationen findest du unter Ändern von Parametern in einer DB-Parametergruppe.
    Hinweis: Bei Amazon Aurora kannst du die Parameter ändern und in einer Cluster-Parametergruppe festlegen, um sie auf der gesamten Clusterebene anzuwenden. Wenn du die Parameter in einer DB-Parametergruppe festlegst, werden sie nur auf Instance-Ebene angewendet. Für die Amazon-Lightsail-MySQL-Datenbank musst du überprüfen, ob Parameter zur Änderung verfügbar sind, bevor du sie mithilfe der Befehlszeilenschnittstelle (CLI) änderst. Weitere Informationen findest du unter Aktualisieren von Datenbankparametern in Amazon Lightsail. Für eine Lightsail-Instance oder eine lokale MySQL-Serverdatenbank oder Amazon Elastic Compute Cloud (Amazon EC2)-MySQL kannst du den Parameter in der Konfigurationsdatei festlegen. Du kannst auch global xxx festlegen, ähnlich wie es in einer normalen On-Premise-MySQL-Umgebung festgelegt wird.
  • Wenn der Fehler nur bei der Rückgabe großer Datensätze auftritt, verwendet der Client möglicherweise einen großen MTU-Wert von 9001. Um dieses Problem zu beheben, reduziere den TCP/IP MTU-Wert des Clients. Informationen zum Ändern des Client-MTU-Werts findest du unter Konfiguration der MTU einer Instance.
  • Wenn init_connect-Parameter auf einen Wert gesetzt sind, der die Verarbeitung des Parameters nicht zulässt, können zugehörige Client-Verbindungen fehlschlagen. Stelle sicher, dass alle init_connect-Parameter korrekt verarbeitet werden. Stelle sicher, dass Benutzer AUSFÜHREN-Berechtigungen für alle Prozeduren haben, auf die als init_connect-Parameter verwiesen wird.
  • Wenn alle Verbindungen gleichzeitig unterbrochen werden, stelle sicher, dass andere Verbindungen noch funktionieren, wenn dieses Problem auftritt. Um dieses Problem zu lösen, stelle sicher, dass die MySQL-DB-Instance nicht abstürzt oder ausfällt, indem du Amazon-RDS-Ereignisse anzeigst und deine MySQL-Fehlerprotokolle überprüfst.

Ähnliche Informationen

Herstellen einer Verbindung zu einer DB-Instance, auf der die MySQL-Datenbank-Engine ausgeführt wird

Ändern einer Amazon-RDS-DB-Instance