VorwortIch glaube, die meisten von Ihnen sind auf die folgende Fehlermeldung gestoßen. Was sollten wir also tun, wenn dieses Problem auftritt? In MySQL 5.7 und früheren Versionen tritt ein „zu viele Verbindungen“-Fehler auf und der Superuser root kann sich nicht anmelden. Es gibt keine bessere Lösung außer den Neustart der Instanz. In MySQL 8.0 wurden jedoch einige Optimierungen an der Verbindungsverwaltung vorgenommen. Werfen wir einen Blick darauf. FEHLER 1040 (HY000): Zu viele Verbindungen VerbindungsverwaltungIn MySQL 8.0 wurden zwei wichtige Änderungen an der Verbindungsverwaltung vorgenommen: Eine davon war das Zulassen zusätzlicher Verbindungen und die andere war ein dedizierter Verwaltungsport. Zusätzliche VerbindungenWenn in MySQL 8.0 die aktuelle Anzahl an Verbindungen die maximale Anzahl an Verbindungen erreicht, lässt der Server eine zusätzliche Verbindung zu, sodass Benutzer mit CONNECTION_ADMIN-Berechtigungen eine Verbindung herstellen können. Lassen Sie uns einen einfachen Test durchführen. (1) Um den Test zu erleichtern, passen Sie zunächst die maximale Anzahl von Verbindungen an mysql> setze global max_connections=3; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) (2) Öffnen Sie mehr Sitzungen, um die maximale Anzahl an Verbindungen zu erreichen mysql> Prozessliste anzeigen; +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 154190 | Warte auf leere Warteschlange | NULL | | 54 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | | 55 | Test | 127.0.0.1:59120 | NULL | Schlaf | 19 | | NULL | | 56 | Test | 127.0.0.1:59136 | NULL | Schlaf | 9 | | NULL | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ 4 Zeilen im Satz (0,00 Sek.) mysql> globalen Status wie „threads_connected“ anzeigen; +---------------------+------+ | Variablenname | Wert | +---------------------+------+ | Threads_verbunden | 3 | +---------------------+------+ 4 Zeilen im Satz (0,01 Sek.) (3) Der normale Benutzertest versucht eine Verbindung herzustellen und meldet die Fehlermeldung „zu viele Verbindungen“ $ mysql -utest -p -h127.0.0.1 -P10080 Passwort eingeben: FEHLER 1040 (08004): Zu viele Verbindungen (4) Der Superuser root versucht erfolgreich eine Verbindung herzustellen $ mysql -uroot -p Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 60 Serverversion: 8.0.20 MySQL Community Server – GPL Copyright (c) 2000, 2020, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten. Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen Eigentümer. Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen. MySQL> (5) Überprüfen Sie erneut die aktuelle Anzahl der Verbindungen, die max_connections + 1 beträgt +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 155064 | Warte auf leere Warteschlange | NULL | | 54 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | | 55 | Test | 127.0.0.1:59120 | NULL | Ruhezustand | 893 | | NULL | | 56 | Test | 127.0.0.1:59136 | NULL | Schlaf | 883 | | NULL | | 60 | root | localhost | NULL | Ruhezustand | 141 | | NULL | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ 5 Zeilen im Satz (0,00 Sek.) mysql> globalen Status wie „threads_connected“ anzeigen; +---------------------+------+ | Variablenname | Wert | +---------------------+------+ | Threads_verbunden | 4 | +---------------------+------+ 4 Zeilen im Satz (0,00 Sek.) (6) Der Superuser root versucht erneut eine Verbindung herzustellen, dabei wird ebenfalls die Fehlermeldung „zu viele Verbindungen“ angezeigt. $ mysql -uroot -p Passwort eingeben: FEHLER 1040 (HY000): Zu viele Verbindungen Aus dem obigen Test können wir ersehen, dass in MySQL 8.0 die Anzahl der zulässigen Verbindungen max_connections+1 beträgt und diese zusätzliche Verbindung nur Benutzern mit CONNECTION_ADMIN-Berechtigungen gestattet ist. Über diese zusätzliche Verbindung kann der DBA den Superuser-Root verwenden, um eine Verbindung herzustellen und Verwaltungsvorgänge wie das Beenden der Sitzung auszuführen, um einen direkten Neustart der Instanz zu vermeiden, wodurch Kosten gesenkt und die Effizienz verbessert werden. VerwaltungsportBis zu einem gewissen Grad bietet die zusätzliche Verbindung eine vorübergehende Lösung für das Problem zu vieler Verbindungen. Da es jedoch nur eine zusätzliche Verbindung gibt, kann es zu Unfällen kommen, z. B. „die Verbindung wird weggerissen“ und „das Terminal wird abnormal getrennt“. Daher wurde in der MySQL-Version 8.0.14 eine sehr wichtige neue Funktion eingeführt: der Verwaltungsport. Er ermöglicht Benutzern mit SERVICE_CONNECTION_ADMIN-Berechtigungen die Verbindung über eine bestimmte IP und einen bestimmten PORT, ohne dass die Anzahl der Verbindungen begrenzt ist. (1) Stellen Sie zunächst die relevanten Parameter vor admin_address: Abhörende IP-Adresse admin_port: Abhörender Port create_admin_listener_thread: Gibt an, ob ein separater Thread zum Abhören von Verwaltungsverbindungen erstellt werden soll (2) Durch die Konfiguration der oben genannten Parameter kann der Management-Port aktiviert werden mysql> globale Variablen wie „admin%“ anzeigen; +---------------+-----------+ | Variablenname | Wert | +---------------+-----------+ | Administratoradresse | 127.0.0.1 | | Administrator-Port | 33062 | +---------------+-----------+ 2 Zeilen im Satz (0,00 Sek.) # netstat -lntp | grep 33062 tcp 0 0 127.0.0.1:33062 0.0.0.0:* LISTEN 20042/mysqld (3) Als nächstes testen mysql> Prozessliste anzeigen; +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 168750 | Warte auf leere Warteschlange | NULL | | 54 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | | 55 | Test | 127.0.0.1:59120 | NULL | Ruhezustand | 14579 | | NULL | | 56 | Test | 127.0.0.1:59136 | NULL | Ruhezustand | 14569 | | NULL | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ 4 Zeilen im Satz (0,00 Sek.) mysql> globalen Status wie „threads_connected“ anzeigen; +---------------------+------+ | Variablenname | Wert | +---------------------+------+ | Threads_verbunden | 3 | +---------------------+------+ 1 Zeile im Satz (0,00 Sek.) (4) Der normale Benutzertest versucht eine Verbindung herzustellen und meldet die Fehlermeldung „zu viele Verbindungen“ $ mysql -utest -p -h127.0.0.1 -P10080 Passwort eingeben: FEHLER 1040 (08004): Zu viele Verbindungen (5) Der Superuser root versucht, sich erfolgreich über den Management-Port zu verbinden $ mysql -uroot -p -h127.0.0.1 -P33062 Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 62 Serverversion: 8.0.20 MySQL Community Server – GPL Copyright (c) 2000, 2020, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten. Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen Eigentümer. Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen. MySQL> (6) Öffnen Sie weiterhin mehrere Sitzungen, verwenden Sie den Superuser root, stellen Sie erfolgreich eine Verbindung über den Verwaltungsport her und sind Sie nicht durch die maximale Anzahl von Verbindungen max_connections beschränkt mysql> Prozessliste anzeigen; +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 169035 | Warte auf leere Warteschlange | NULL | | 54 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | | 55 | Test | 127.0.0.1:59120 | NULL | Ruhezustand | 14864 | | NULL | | 56 | Test | 127.0.0.1:59136 | NULL | Ruhezustand | 14854 | | NULL | | 62 | root | 127.0.0.1:47660 | NULL | Schlaf | 151 | | NULL | | 63 | root | 127.0.0.1:47760 | NULL | Schlaf | 52 | | NULL | | 64 | root | 127.0.0.1:47768 | NULL | Schlaf | 43 | | NULL | | 65 | root | 127.0.0.1:47780 | NULL | Schlaf | 35 | | NULL | | 66 | root | 127.0.0.1:47790 | NULL | Schlaf | 24 | | NULL | | 67 | root | 127.0.0.1:47800 | NULL | Schlaf | 16 | | NULL | | 68 | root | 127.0.0.1:47808 | NULL | Schlaf | 8 | | NULL | +----+-----------------+-----------------+------+---------+---------+---------+------------------------+------------------+ 11 Zeilen im Satz (0,00 Sek.) mysql> globalen Status wie „threads_connected“ anzeigen; +---------------------+------+ | Variablenname | Wert | +---------------------+------+ | Threads_verbunden | 10 | +---------------------+------+ 1 Zeile im Satz (0,00 Sek.) Man kann sagen, dass sich DBAs mit der neuen Verwaltungsportfunktion keine Sorgen mehr über das Problem zu vieler Verbindungen machen müssen. ZusammenfassenUm das Szenario zu vieler Verbindungen zu bewältigen, wurden in MySQL 8.0 zwei neue Funktionen eingeführt: zusätzliche Verbindungen und Verwaltungsports, mit denen Datenbankadministratoren das Problem bequem und schnell lösen können. Dies ist jedoch immer eine vorübergehende Notfallmaßnahme. Der grundlegendste Grund besteht darin, die Konfiguration der Anwendungsseite (Parallelitätslimit, SQL-Leistung, Verbindungspoolkonfiguration usw.) zu überprüfen, um solche Probleme vollständig zu vermeiden. Oben finden Sie den detaillierten Inhalt der Einführung in die Verwendung der neuen Funktion von MySQL 8.0 - Verwaltungsport. Weitere Informationen zur neuen Funktion von MySQL 8.0 - Verwaltungsport finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Lösen Sie das Problem, dass Docker das MySQL-Image zu langsam zieht
>>: Der vollständige Leitfaden zum Rasterlayout in CSS
Mit dem Befehl „mysql explain“ wird gezeigt, wie ...
Inhaltsverzeichnis 1. Seitenlayout 2. Bild-Upload...
Welchen Parameter verwendet der RPM-Befehl zum In...
Der Wachstumspfad vom Linux-Neuling zum Linux-Mei...
0. Warum brauchen wir Remote-Entwicklung? Bei der...
Während der Systemwartung müssen Sie möglicherwei...
Inhaltsverzeichnis 1. Einleitung 2. Verwendung 1....
Ich habe eine gute Idee gesehen und sie aufgezeic...
Beim Konfigurieren eines Clusters ist ein Problem...
1. Kompilierung und Installation von Packetdrill ...
Inhaltsverzeichnis 1. Technischer Überblick 2. Te...
Inhaltsverzeichnis 1. Was ist eine Richtlinie? Ei...
1 Überprüfen Sie, ob der Kernel ein Tun-Modul hat...
Umweltvorbereitung: VMware+CentOS, jdk 1. Überprü...
Inhaltsverzeichnis Vorwort && Operator ||...