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

So schreiben Sie mithilfe von Filtern transparentes CSS für Bilder

So schreiben Sie mithilfe von Filtern transparente...

Erfahrung im Selbststudium von CSS-Optimierungsfähigkeiten

1. Verwenden Sie CSS-Sprites. Der Vorteil besteht ...

NodeJS realisiert die Bildtextsegmentierung

In diesem Artikel wird der spezifische Code von N...

Zwei Möglichkeiten, die CSS-Priorität zu verstehen

Methode 1: Werte hinzufügen Gehen wir zu MDN, um ...

So ändern Sie die Standardcodierung von MySQL in Linux

Wenn während des Entwicklungsprozesses nach der W...

Einführung in die Verwendung des MySQL pt-slave-restart-Tools

Inhaltsverzeichnis Beim Einrichten einer MySQL-Ma...

Fehler beim reduzierten Tabellenzeilenelement

Nehmen wir ein Beispiel: Der Code ist sehr einfach...

Ein super detailliertes Vue-Router Schritt-für-Schritt-Tutorial

Inhaltsverzeichnis 1. Router-Ansicht 2. Router-Ve...

JavaScript-Puzzlespiel

In diesem Artikelbeispiel wird der spezifische Ja...

Docker startet im Status „Beendet“

Nach dem Docker-Lauf ist der Status immer „Beende...

Empfohlene Plugins und Anwendungsbeispiele für Vue-Unit-Tests

Inhaltsverzeichnis rahmen Erstklassiges Fehlerrep...