Neue Funktionen in MySQL 8.0 - Einführung in die Verwendung des Management-Ports

Neue Funktionen in MySQL 8.0 - Einführung in die Verwendung des Management-Ports

Vorwort

Ich 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

Verbindungsverwaltung

In 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 Verbindungen

Wenn 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.

Verwaltungsport

Bis 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.

Zusammenfassen

Um 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:
  • Grafisches Tutorial zur Installation und Konfiguration der MySQL-Version 8.0.24
  • Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.24
  • Einige Verbesserungen in MySQL 8.0.24 Release Note
  • Detaillierte Schritte für Java zum Herstellen einer Verbindung mit MySQL 8.0 JDBC (IDEA-Version)
  • Detaillierte Analyse des MySQL 8.0-Speicherverbrauchs
  • Detaillierte grafische Beschreibung des MySql8.023-Installationsprozesses (Erstinstallation)
  • Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints
  • mysql8.0.23 msi Installation super ausführliches Tutorial
  • Ausführliches Tutorial zur Konfiguration der kostenlosen Installationsversion von MySQL 8.0.23
  • So installieren Sie mysql8.0.23 unter Win10 und lösen das Problem „Der Dienst reagiert nicht auf die Steuerfunktion“
  • Grundlegende Operationen an unsichtbaren Spalten in MySQL 8.0

<<:  Lösen Sie das Problem, dass Docker das MySQL-Image zu langsam zieht

>>:  Der vollständige Leitfaden zum Rasterlayout in CSS

Artikel empfehlen

Verwendung und Analyse des Mysql Explain-Befehls

Mit dem Befehl „mysql explain“ wird gezeigt, wie ...

Detaillierte Erklärung der Linux-Systemverzeichnisse sys, tmp, usr, var!

Der Wachstumspfad vom Linux-Neuling zum Linux-Mei...

Remote-Entwicklung mit VSCode und SSH

0. Warum brauchen wir Remote-Entwicklung? Bei der...

Packetdrills prägnantes Benutzerhandbuch

1. Kompilierung und Installation von Packetdrill ...

So verstehen Sie die Dateninteraktion und -anzeige im Vue-Frontend und -Backend

Inhaltsverzeichnis 1. Technischer Überblick 2. Te...

Beispiele für die Verwendung der Operatoren && und || in JavaScript

Inhaltsverzeichnis Vorwort && Operator ||...