544 Stimmen

Wie kann man die zuletzt ausgeführten Abfragen an MySQL anzeigen?

Gibt es eine Abfrage/Möglichkeit, die letzten Abfragen anzuzeigen, die auf ALLE Server?

929voto

FlipMcF Punkte 12196

Für diejenigen, die mit MySQL >= 5.1.12 gesegnet sind, können Sie diese Option zur Laufzeit global steuern:

  1. Ausführen SET GLOBAL log_output = 'TABLE';
  2. Ausführen SET GLOBAL general_log = 'ON';
  3. Werfen Sie einen Blick auf die Tabelle mysql.general_log

Wenn Sie die Ausgabe in eine Datei statt in eine Tabelle bevorzugen:

  1. SET GLOBAL log_output = "FILE"; der Standard .
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log";
  3. SET GLOBAL general_log = 'ON';

Ich ziehe diese Methode der Bearbeitung von .cnf-Dateien vor, weil:

  1. Sie bearbeiten nicht die my.cnf Datei und potenziell dauerhaftes Einschalten der Protokollierung
  2. 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
  3. Sie müssen den Server nicht neu starten und keine laufenden Verbindungen zu ihm unterbrechen.
  4. 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

45voto

Paul Dixon Punkte 286600

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.

25voto

zloctb Punkte 9390
SELECT * FROM  mysql.general_log  WHERE command_type ='Query' LIMIT total;

20voto

Rokibul Hasan Punkte 3962

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

18voto

minhas23 Punkte 8655

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X