Einführung in general_log-Protokollwissenspunkte in MySQL

Einführung in general_log-Protokollwissenspunkte in MySQL

Die folgenden Funktionsdemonstrationen basieren alle auf MySQL Version 5.6.36:

Bei meiner Arbeit stoße ich häufig auf dieses Problem: Der MySQL-Datenzugriff verbraucht viel Energie und ich möchte ihn aus SQL-Sicht optimieren. F&E-Mitarbeiter fragen oft, ob sie sehen können, welche SQL-Anweisungen am häufigsten ausgeführt werden. Antwort: Nein, Sie können nur das aktuell laufende SQL und das im Slow-Log aufgezeichnete SQL sehen. Aus Performancegründen ist das allgemeine Protokoll normalerweise nicht aktiviert. Das langsame Protokoll kann einige SQL-Anweisungen mit Leistungsproblemen lokalisieren, während das allgemeine Protokoll alle SQL-Anweisungen aufzeichnet. Manchmal treten jedoch bei MySQL in der Produktion Leistungsprobleme auf. Das Aktivieren des allgemeinen Protokolls für einen kurzen Zeitraum zum Abrufen des SQL-Ausführungsstatus ist bei der Fehlersuche und Analyse von MySQL-Leistungsproblemen immer noch sehr hilfreich. Oder manchmal sind Sie sich nicht sicher, welche SQL-Anweisung das Programm ausgeführt hat, aber Sie müssen den Fehler beheben. Wenn Sie die Ursache nicht finden können, können Sie das allgemeine Protokoll vorübergehend aktivieren.

Wenn Sie in MySQL 5.0 das langsame oder allgemeine Protokoll aktivieren möchten, müssen Sie das System neu starten. Ab MySQL 5.1.6 unterstützen das allgemeine Abfrageprotokoll und das langsame Abfrageprotokoll das Schreiben in Dateien oder Datenbanktabellen. Darüber hinaus können die Protokollaktivierung und die Änderung des Ausgabemodus dynamisch auf globaler Ebene geändert werden.

Es gibt mehrere Möglichkeiten, das allgemeine Protokoll zu öffnen.

Es folgt eine kurze Einführung und Demonstration:

Methode 1: Ändern Sie die my.cnf-Konfigurationsdatei

[root@git-server ~]# grep general_log /etc/my.cnf
general_log = 1
general_log_file = /tmp/general.log

Starten Sie MySQL neu. Dieser Vorgang hat einen dauerhaften Effekt. Natürlich darf diese Methode nicht in der Produktion eingesetzt werden. Weil ein Neustart von MySQL die MySQL-Dienste unterbricht. Gleichzeitig zeichnet general.log alle DDL- und DML-Anweisungen zu MySQL auf, was viele Ressourcen verbraucht. Es wird normalerweise vorübergehend für einige Minuten geöffnet, um bei der Behebung von MySQL-Problemen zu helfen. Es wird anschließend geschlossen.

Methode 2: Bedienung in der MySQL-Befehlskonsole

Nur der Root-Benutzer hat die Berechtigung, auf diese Datei zuzugreifen

Standardmäßig ist dieses Protokoll deaktiviert.

mysql> globale Variablen wie „%general%“ anzeigen;
+------------------+---------------------------------+
| Variablenname | Wert |
+------------------+---------------------------------+
| general_log | AUS |
| allgemeine_Protokolldatei | /data/mysql/data/git-server.log |
+------------------+---------------------------------+
2 Zeilen im Satz (0,00 Sek.)

MySQL>

Manchmal müssen Sie das globale general_log von MySQL vorübergehend aktivieren. Sie können sich bei MySQL anmelden, den Protokollpfad direkt festlegen und general_log aktivieren.

mysql> globales general_log_file='/tmp/general_log' festlegen;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> globales General_Log festlegen = ein;
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)

mysql> globale Variablen wie „%general%“ anzeigen;
+------------------+------------------+
| Variablenname | Wert |
+------------------+------------------+
| general_log | EIN |
| allgemeine_Protokolldatei | /tmp/allgemeines_Protokoll |
+------------------+------------------+
2 Zeilen im Satz (0,00 Sek.)

MySQL> 

[root@git-server ~]# tailf /tmp/general_log
180717 22:55:51 2 Abfrage Datenbanken anzeigen
180717 22:56:04 2 Abfrage SELECT DATABASE()
      2 DB-Test initieren
180717 22:56:14 2 Abfrage select * from student3

Nach der Verwendung können Sie global general_log=off direkt festlegen; schließen Sie dieses Protokoll

Methode 3: Speichern Sie das Protokoll in der Tabelle general_log der MySQL-Datenbank

mysql> globales log_output='Tabelle' festlegen;
mysql> globales General_Log festlegen = ein;
mysql> mysql verwenden;
mysql> wähle * aus test.student3;
+----+--------------+------------+--------+------+
| ID | Lehrername | Lehrer-ID | Name | Geschlecht |
+----+--------------+------------+--------+------+
| 1 | Huahua| 1 | Sanan| Weiblich|
| 4 | Sansan| 2 | Sanan| Weiblich|
| 6 | bibi | 3 | Sanan | Weiblich |
+----+--------------+------------+--------+------+
3 Zeilen im Satz (0,00 Sek.)

mysql> wähle * aus general_log;
| 17.07.2018 23:00:12 | root[root]@localhost [] | 2 | 1132333306 | Abfrage | select * from test.student3

Durch Betrachten der Informationen in /tmp/general.log können Sie ungefähr erkennen, welche SQL-Abfragen/Aktualisierungen/Löschungen/Einfügungen häufiger vorkommen. Einige Tabellen ändern sich beispielsweise nicht häufig, weisen aber ein großes Abfragevolumen auf, sodass sie zwischengespeichert werden können. Bei Tabellen, die keine hohe Latenz zwischen der primären und der Standby-Datenbank erfordern, können Lesevorgänge in der Standby-Datenbank abgelegt werden.

Das Obige sind alle Wissenspunkte zum diesmal eingeführten general_log-Protokoll. Vielen Dank für das Lesen und Ihre Unterstützung für 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Mysql Online-Wiederherstellung des Undo-Tabellenbereichs tatsächlicher Kampfdatensätze
  • Fehlerbehebung beim MySQL-Redo-Deadlock-Problem und Analyse des Lösungsprozesses
  • So verkleinern Sie die Protokolldatei in MYSQL SERVER
  • Zusammenfassung einiger gängiger Protokolle in MySQL
  • Implementierungscode für den MySQL-Protokolltrigger
  • Detaillierte Erklärung, warum die langsame Abfrageprotokollzeit von MySQL 5.7 8 Stunden hinter der Systemzeit liegt
  • So konvertieren Sie MySQL-Bin-Log-Protokolldateien in SQL-Dateien
  • Detaillierte Erläuterung des Befehls zum Bereinigen des MySQL-Datenbank-Binlogs
  • Detaillierte Erläuterung des MySQL-Redo-Logs (Redo-Log) und des Rollback-Logs (Undo-Log)

<<:  Vue-Plugin-Fehler: Auf dieser Seite wurde Vue.js erkannt. Problem gelöst

>>:  Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip

Artikel empfehlen

Vue implementiert das Hinzufügen eines Wasserzeicheneffekts zur Seite

Als ich kürzlich an einem Projekt arbeitete, wurd...

Eine Frage zur Einstellung des Randradius-Werts

Problemdatensatz Heute wollte ich ein kleines Bau...

10 HTML-Tabellen-bezogene Tags

Tatsächlich werden viele Leute sagen: „Ich habe ge...

Techniken zur Optimierung von MySQL-Paging-Abfragen

In Anwendungen mit Paging-Abfragen sind Abfragen,...

Zusammenfassung des Wissens zu MySQL-Sperren

Sperren in MySQL Sperren sind ein Mittel, um Ress...

Linux Yum-Paketverwaltungsmethode

Einführung yum (Yellow dog Updater, Modified) ist...

Eine umfassende Analyse der Möglichkeiten von Nginx

Vorwort Dieser Artikel konzentriert sich nur dara...

Vue verwendet Drag & Drop, um einen Strukturbaum zu erstellen

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Schritte zur vollständigen Deinstallation von MySQL 5.7

Dieser Artikel fasst hauptsächlich verschiedene P...

Detaillierte Erklärung der HTML-Formularelemente (Teil 2)

HTML-Eingabeattribute Das Value-Attribut Das Valu...