In dieser kurzen und leicht verständlichen Anleitung behandeln wir, wie Sie die MySQL/MariaDB-Abfrageprotokollierung aktivieren und Abfragen in einer Datei speichern.
Bei der Verwendung einer Datenbank kommt es häufig vor, dass Entwickler wissen wollen, was hinter den Kulissen vor sich geht. Ob zur Fehlerbehebung, Leistungsoptimierung oder aus purer Neugier.
Allgemeine Abfrageprotokolle bleiben eine der beliebtesten Quellen für Prüf- und Diagnoseinformationen in MySQL/MariaDB-Datenbanken. Nachdem die Protokollierung aktiviert wurde, schreibt der Datenbankserver Informationen in die Protokolldatei, wenn Clients eine Verbindung herstellen oder trennen, und er protokolliert jede SQL-Anweisung.
Beachten Sie jedoch, dass die Aktivierung des allgemeinen Abfrageprotokolls die Leistung von MySQL/MariaDB beeinträchtigt. Dadurch wird der Durchsatz um etwa 13 % verringert und die Antwortzeit vom MySQL/MariaDB-Server um etwa 17 % erhöht.
Beginnen wir also ohne weiteres, denn der Prozess ist ziemlich einfach.
Aktivieren Sie die allgemeine MySQL/MariaDB-Abfrageprotokollierung
In MySQL/MariaDB ist das allgemeine Abfrageprotokoll standardmäßig deaktiviert.
1. Geben Sie als root in das Befehlszeilentool des MySQL/MariaDB-Servers ein:
mysql -u root -p
2. Legen Sie den allgemeinen Protokolldateipfad auf /var/logs/mysql/general-query.log
fest indem Sie die folgende Abfrage ausführen.
SET GLOBAL general_log_file='/var/log/mysql/general-query.log';
Standardmäßig wird das allgemeine Abfrageprotokoll in dasselbe Datenverzeichnis geschrieben, das die Datenbankunterverzeichnisse selbst enthält (normalerweise /var/lib/mysql
) und der Name der Protokolldatei ist standardmäßig der Hostname. Wie Sie sehen können, kann dies jedoch geändert werden.
3. Aktivieren Sie das allgemeine Serverprotokoll:
SET GLOBAL general_log = 1;
Lassen Sie uns noch einmal den Status des allgemeinen MySQL/MariaDB-Abfrageprotokolls überprüfen:
SHOW VARIABLES LIKE "general_log%";
Das ist es. Von hier an können Sie etwas Ähnliches wie sudo tail -f
tun auf der general-query.log
Datei von der Kommandozeile und behalten Sie alles im Auge.
Sobald Sie mit Ihrer Inspektion fertig sind, können Sie die MySQL/MariaDB-Abfrageprotokollierung wie folgt deaktivieren:
SET GLOBAL general_log = 0;
Es ist sicherlich nicht wünschenswert, die Protokollierung auf einem Produktionsserver aktiviert zu haben. Seien Sie also vorsichtig damit, die Protokolldatei kann ziemlich schnell groß werden.
Wenn Sie Abfragen nicht direkt ausführen möchten, können Sie dennoch die MySQL/MariaDB-Abfrageprotokollierung aktivieren, indem Sie die MySQL/MariaDB-Konfigurationsdatei direkt ändern, aber denken Sie daran, dass dieser Ansatz einen Neustart des Datenbankservers erfordert.
Schlussfolgerung
Das allgemeine MySQL/MariaDB-Abfrageprotokoll kann sehr nützlich sein, wenn Sie einen Fehler in einem Client vermuten und genau wissen möchten, was der Client an die Datenbank gesendet hat. Wenn Sie also einen Fehler oder ein Problem mit der Datenbank haben, können Sie das Problem verfolgen, indem Sie dieses Protokoll aktivieren und überprüfen, was passiert.
Weitere Informationen zum Aktivieren des allgemeinen MySQL/MariaDB-Abfrageprotokolls finden Sie hier und hier.