Vorwort:Während des Betriebs und der Wartung der Datenbank achten wir häufig auf den Verbindungsstatus der Datenbank, z. B. wie viele Links insgesamt vorhanden sind, wie viele aktive Links vorhanden sind, ob die Ausführung von Links zu lange dauert usw. Verschiedene Datenbankanomalien können sich auch indirekt im Linkstatus widerspiegeln. Insbesondere wenn die Datenbank blockiert ist oder stark feststeckt, sollten wir zunächst prüfen, ob die Datenbank abnormale Links enthält, und diese abnormalen Links löschen. In diesem Artikel wird hauptsächlich erläutert, wie Datenbanklinks angezeigt und abnormale Links gelöscht werden. 1. Datenbanklink anzeigenDie am häufigsten verwendete Anweisung zum Anzeigen von Datenbanklinks ist „show processlist“, mit der der Status der in der Datenbank vorhandenen Threads angezeigt werden kann. Normale Benutzer können nur vom aktuellen Benutzer initiierte Links anzeigen, während Benutzer mit globalen PROCESS-Berechtigungen die Links aller Benutzer anzeigen können. Das Infofeld im Ergebnis „Prozessliste anzeigen“ zeigt nur die ersten 100 Zeichen jeder Anweisung an. Wenn Sie weitere Informationen anzeigen müssen, können Sie „Vollständige Prozessliste anzeigen“ verwenden. Ebenso können Sie die Statusinformationen zur Datenbankverbindung anzeigen, indem Sie die Tabelle information_schema.processlist anzeigen. # Normale Benutzer können nur die vom aktuellen Benutzer initiierten Links sehenmysql> select user(); +--------------------+ | Benutzer() | +--------------------+ | Testbenutzer@localhost | +--------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> Berechtigungen anzeigen; +----------------------------------------------------------------------+ | Zuschüsse für testuser@% | +----------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'Testbenutzer'@'%' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `testdb`.* TO 'testuser'@'%' | +----------------------------------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> Prozessliste anzeigen; +--------+----------+-----------+--------+---------+------+----------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +--------+----------+-----------+--------+---------+------+----------+------------------+ | 769386 | Testbenutzer | localhost | NULL | Ruhezustand | 201 | | NULL | | 769390 | Testbenutzer | localhost | testdb | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | +--------+----------+-----------+--------+---------+------+----------+------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> wähle * aus information_schema.prozessliste; +--------+----------+--------------+---------+---------+------+-----------+---------------+----------------------------------------------+ | ID | BENUTZER | HOST | DB | BEFEHL | ZEIT | STATUS | INFO | +--------+----------+--------------+---------+---------+------+-----------+---------------+----------------------------------------------+ | 769386 | Testbenutzer | localhost | NULL | Ruhezustand | 210 | | NULL | | 769390 | Testbenutzer | localhost | Testdb | Abfrage | 0 | wird ausgeführt | select * from information_schema.processlist | +--------+----------+--------------+---------+---------+------+-----------+---------------+----------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) # Nachdem Sie die PROCESS-Berechtigung erteilt haben, können Sie die Links aller Benutzer sehenmysql> grant process on *.* to 'testuser'@'%'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> Berechtigungen anzeigen; +----------------------------------------------------------------------+ | Zuschüsse für testuser@% | +----------------------------------------------------------------------+ | GRANT-PROZESS AUF *.* AN 'Testbenutzer'@'%' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `testdb`.* TO 'testuser'@'%' | +----------------------------------------------------------------------+ 2 Zeilen im Satz (0,00 Sek.) mysql> Prozessliste anzeigen; +--------+----------+--------------------+--------+---------+------+----------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +--------+----------+--------------------+--------+---------+------+----------+------------------+ | 769347 | root | localhost | testdb | Ruhezustand | 53 | | NULL | | 769357 | root | 192.168.85.0:61709 | NULL | Schlaf | 521 | | NULL | | 769386 | Testbenutzer | localhost | NULL | Ruhezustand | 406 | | NULL | | 769473 | Testbenutzer | localhost | testdb | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | +--------+----------+--------------------+--------+---------+------+----------+------------------+ 4 Zeilen im Satz (0,00 Sek.) Durch die Ergebnisse der Prozesslistenanzeige können wir die Detailinformationen zu jedem Thread-Link klar verstehen. Die Bedeutung der einzelnen Felder ist relativ einfach zu verstehen. Im Folgenden finden Sie eine detaillierte Erklärung, was jedes Feld darstellt:
Wenn zu viele Datenbanklinks vorhanden sind, wird das Filtern nützlicher Informationen mühsam. Beispielsweise möchten wir nur den Link eines bestimmten Benutzers oder einen bestimmten Status überprüfen. Zu diesem Zeitpunkt finden wir mit „show processlist“ einige Informationen, die wir nicht benötigen. Zu diesem Zeitpunkt wird es viel einfacher, mit „information_schema.processlist“ zu filtern. Im Folgenden sind einige häufige Filteranforderungen aufgeführt: # Nur die Linkinformationen einer bestimmten ID anzeigen. select * from information_schema.processlist where id = 705207; # Filtern Sie die Links eines bestimmten Benutzers heraus. select * from information_schema.processlist where user = 'testuser'; # Alle nicht inaktiven Links herausfiltern. Wählen Sie * aus information_schema.processlist aus, wobei command != 'Sleep'; # Filtern Sie Links mit einer Leerlaufzeit von mehr als 600 Sekunden heraus. Wählen Sie * aus information_schema.processlist, wobei command = „Sleep“ und time > 600 ist. # Links in einem bestimmten Status herausfiltern. Wählen Sie * aus information_schema.processlist, wobei status = „Daten werden gesendet“ ist. # Filtern Sie die Links einer bestimmten Client-IP, wählen Sie * aus information_schema.processlist, wo Host wie „192.168.85.0%“; 2. Beenden Sie die DatenbankverbindungWenn eine Datenbankverbindung nicht normal ist, können wir sie mit der Kill-Anweisung beenden. Die Standardsyntax für Kill lautet: KILL [CONNECTION | QUERY] processlist_id; KILL erlaubt optionale CONNECTION- oder QUERY-Modifikatoren:
Die Möglichkeit, Links zu löschen, hängt vom SUPER-Privileg ab:
Wenn Sie in einen Notfall geraten und Links stapelweise löschen müssen, können Sie die Kill-Anweisung durch Einfügen von SQL erhalten und dann ausführen. Das ist viel bequemer. Hier sind einige SQL-Anweisungen, die zum Löschen von Links verwendet werden können: # Beenden Sie die Links, die länger als 600 Sekunden inaktiv sind, und verketten Sie sie, um die Kill-Anweisung zu erhalten. Wählen Sie concat('KILL ',id,';') aus information_schema.`processlist` wobei Befehl = „Schlaf“ und Zeit > 600; # Beenden Sie die Links in einem bestimmten Zustand und verketten Sie sie, um die Kill-Anweisung zu erhalten. Wählen Sie concat('KILL ',id,';') aus information_schema.`processlist` wobei Status = „Daten werden gesendet“; Wählen Sie concat('KILL ',id,';') aus information_schema.`processlist` wobei Status = „Warten auf Sperre der Tabellenmetadaten“; # Beenden Sie einen von einem Benutzer initiierten Link und verketten Sie die Kill-Anweisung select concat('KILL ',id,';') from information_schema.`processlist` Benutzer = "Testbenutzer"; Hier eine Erinnerung, dass die Kill-Anweisung mit Vorsicht verwendet werden muss! Insbesondere wenn dieser Link eine Aktualisierungsanweisung oder eine Anweisung zur Änderung der Tabellenstruktur ausführt, kann das Beenden des Links einen relativ langen Rollback-Vorgang erfordern. Zusammenfassen:In diesem Artikel wird erläutert, wie Sie Datenbanklinks anzeigen und löschen. Wenn Sie in Zukunft den Verdacht haben, dass ein Problem mit der Datenbank vorliegt, können Sie den Status der Datenbankverbindung so schnell wie möglich überprüfen. Oben finden Sie Einzelheiten zum Anzeigen von MySQL-Links und zum Löschen abnormaler Links. Weitere Informationen zum Anzeigen von MySQL-Links und zum Löschen abnormaler Links finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Implementierung der Leistungsoptimierung des Element-Shuttle-Frames
>>: Die entsprechenden Attribute und Verwendung von XHTML-Tags in CSS
CHAR- und VARCHAR-Typen sind ähnlich und untersch...
Code kopieren Der Code lautet wie folgt: <!DOC...
Installationsmethode für komprimierte MySQL 8.0-P...
1. HTML-Tags mit Attributen XML/HTML-CodeInhalt i...
Die google.html-Schnittstelle ist wie in der Abbil...
Das MySQL auf dem Server ist in der Version 8.0.1...
In diesem Artikel wird der spezifische JS-Code zu...
In CSS3 können mit der Transformationsfunktion vi...
Linux-Version: CentOS 7 [root@azfdbdfsdf230lqdg1b...
Dieses Artikelbeispiel zeigt die Implementierung ...
Inhaltsverzeichnis Tutorial-Reihe 1. Installieren...
Mixin-Methode: Der Browser kann nicht kompilieren...
Was ist ein Primärschlüssel? Ein Primärschlüssel ...
Die Hauptfunktion eines Rechners besteht darin, n...
Inhaltsverzeichnis HTTP-Hijacking, DNS-Hijacking ...