Zahlungsmethoden Abuse

Ошибка 2006: MySQL Server ist verschwunden

09.03.2021, 22:01

Der Fehler 2006 namens MySQL Sever has gone away bedeutet, dass der Server die Verbindung verweigert hat, obwohl er läuft. Es gibt nur drei bekannte Gründe für das Auftreten dieses Fehlers. Der erste Grund ist, dass der Server überlastet ist. Die Wartezeit ist bereits abgelaufen. Der zweite Grund ist, dass der Client ein zu schweres Paket gesendet hat. Der dritte Grund ist, dass der Server nicht vollständig initialisiert wurde. Im Folgenden werden wir im Detail betrachten, aus welchen Gründen der Fehler auftritt und wie man ihn beheben kann.

Wie man den Fehler behebt

In der Regel tritt der Fehler auf, wenn Sie versuchen, eine Verbindung zur Datenbank über PHP, einen Konsolen-Client oder über PhpMyAdmin herzustellen:

PhpMyAdmin

Lassen Sie uns jede Situation einzeln untersuchen.

Abgelaufene Zeitüberschreitung

Wie bereits zu Beginn dieses Artikels erwähnt, ist eine der möglichen Ursachen eine abgelaufene Wartezeit. Es kann sein, dass der Server überlastet ist und die Last nicht bewältigen kann - die Verarbeitung aller Verbindungen. Um zu verstehen, wie lange Serveranfragen dauern, können Sie einen beliebigen Konsolen-Client verwenden und sich mit dem Server verbinden. Wenn Sie dazu in der Lage sind, führen Sie eine beliebige Anfrage aus. Wenn die Verarbeitung von Anfragen zu viel Zeit in Anspruch nimmt, können Sie MySQL mit einem speziellen Skript MySQLTuner optimieren. Erhöhen Sie normalerweise die Poolgröße der InnoDB-Engine, indem Sie den Parameter innodb_buffer_pool_size setzen. Der optimale Wert wird mit Hilfe des oben genannten Skripts ermittelt.

Wenn er 800 Megabyte beträgt (es kann auch eine andere Größe sein), setzen Sie ihn:

$ sudo vi /etc/mysql/my.cnf
innodb_buffer_pool_size=800M

https://pq.hosting/help/myfiles/mysqlhasgoneavay-991x576.png

Es gibt eine weitere Möglichkeit, das Problem zu lösen. Zu diesem Zweck wird die Antwortzeit des Servers erhöht. Dazu müssen Sie den Parameter wait_timeout ändern. Dies ist die Zeit in Sekunden, in der Sie auf eine Antwort des Servers warten sollten.

Ein Beispiel:

wait_timeout=500

параметр wait_timeout

Wenn Sie Änderungen vornehmen, vergessen Sie nicht, den Server anschließend neu zu starten:

$ sudo systemctl restart mysql

Oder:

$ sudo systemctl restart mariadb

Zu große Pakete

Wenn der Client eines Benutzers zu viele Pakete erzeugt, gibt der Server diesen Fehler aus. Die verfügbare Paketgröße (Maximalwert) kann mit dem Parameter max_allowed_packet erhöht werden.

Ein Beispiel:

$ sudo vi /etc/mysql/my.cnf
max_allowed_packet=128M

Achten Sie besonders auf den Client, denn wenn er sehr viele Anfragen sendet, machen Sie offensichtlich etwas falsch. Erzeugen Sie zumindest keine Abfragen an MySQL mit for-Schleifen.

Der Server ist falsch initialisiert

Wenn Sie sich entscheiden, MySQL oder MariaDB in Docker einzusetzen, müssen Sie mit einem ähnlichen Fehler rechnen. Die anfängliche Initialisierung des Containers erfordert etwas mehr freie Zeit. Wenn Sie die Initialisierung des Containers nicht abschließen, indem Sie ihn zuerst stoppen und starten, wird die Datenbank immer diesen Fehler zurückgeben. Die Lösung besteht darin, die Containerdaten vollständig aus der Datenbank zu entfernen.

Dies geschieht folgendermaßen:

$ docker-compose down

oder:

$ docker rm mysql-container

Als nächstes müssen Sie den Speicher (Volume) mit der fehlerhaft initialisierten Datenbank löschen. Schauen Sie aber zunächst die Liste aller Speicher durch:

$ docker volume ls

СЕРВЕР НЕВЕРНО ПРОИНИЦИАЛИЗИРОВАН

Nach dem Löschen:

$ docker volume rm volume_name

Jetzt können Sie mit der Initialisierung der Anwendung beginnen. Warten Sie einfach, bis der Datenbankserver Ihnen mitteilt, dass er bereit ist und Sie sich mit ihm verbinden können.