Gibt es eine Abfrage/Möglichkeit, die letzten Abfragen anzuzeigen, die auf ALLE Server?
Antworten
Zu viele Anzeigen?Für diejenigen, die mit MySQL >= 5.1.12 gesegnet sind, können Sie diese Option zur Laufzeit global steuern:
- Ausführen
SET GLOBAL log_output = 'TABLE';
- Ausführen
SET GLOBAL general_log = 'ON';
- Werfen Sie einen Blick auf die Tabelle
mysql.general_log
Wenn Sie die Ausgabe in eine Datei statt in eine Tabelle bevorzugen:
SET GLOBAL log_output = "FILE";
der Standard .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Ich ziehe diese Methode der Bearbeitung von .cnf-Dateien vor, weil:
- Sie bearbeiten nicht die
my.cnf
Datei und potenziell dauerhaftes Einschalten der Protokollierung - Sie müssen nicht im Dateisystem nach dem Abfrageprotokoll suchen - oder, noch schlimmer, sich von der Suche nach dem perfekten Ziel ablenken lassen.
/var/log /var/data/log
/opt /home/mysql_savior/var
- Sie müssen den Server nicht neu starten und keine laufenden Verbindungen zu ihm unterbrechen.
- der Neustart des Servers lässt Sie dort, wo Sie angefangen haben (das Protokoll ist standardmäßig immer noch deaktiviert)
Weitere Informationen finden Sie unter MySQL 5.1 Referenzhandbuch - Server-Systemvariablen - general_log
Sie können eine Allgemeines Abfrageprotokoll für diese Art von Diagnose. Im Allgemeinen protokollieren Sie jedoch nicht alle SELECT-Abfragen auf einem Produktionsserver, denn das ist ein Leistungskiller.
Bearbeiten Sie Ihre MySQL-Konfiguration, z. B. /etc/mysql/my.cnf - suchen Sie nach einer Zeile wie dieser oder fügen Sie sie hinzu
[mysqld]
log = /var/log/mysql/mysql.log
Starten Sie mysql neu, damit diese Änderung übernommen wird.
tail -f /var/log/mysql/mysql.log
Und schon können Sie die Anfragen beobachten, während sie eintreffen.
Sie können die fließende Sache für die Überwachung mysql Abfrageprotokolle tun.
Öffnen Sie die mysql-Konfigurationsdatei my.cnf
sudo nano /etc/mysql/my.cnf
Suchen Sie folgende Zeilen unter einem [mysqld]
und entfernen Sie die Kommentarzeichen in diesen Zeilen, um die Protokollierung zu aktivieren
general_log_file = /var/log/mysql/mysql.log
general_log = 1
Starten Sie Ihren mysql-Server neu, damit die Änderungen berücksichtigt werden
sudo service mysql start
Überwachen Sie das mysql-Serverprotokoll mit folgendem Befehl im Terminal
tail -f /var/log/mysql/mysql.log
1) Wenn die allgemeine Mysql-Protokollierung aktiviert ist, können wir die Abfragen in der Protokolldatei oder -tabelle überprüfen, die auf dem basieren, was wir in der Konfiguration angegeben haben. Prüfen Sie mit dem folgenden Befehl, was aktiviert ist
mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
Wenn wir einen Abfrageverlauf in einer Tabelle benötigen, dann
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
Schauen Sie sich die Tabelle mysql.general_log an
Wenn Sie die Ausgabe in eine Datei bevorzugen:
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
2) Wir können auch die Abfragen in der Datei .mysql_history überprüfen cat ~/.mysql_history
- See previous answers
- Weitere Antworten anzeigen