Gibt es eine Abfrage/Möglichkeit, die letzten Abfragen anzuzeigen, die auf ALLE Server?
Antworten
Zu viele Anzeigen?Vielleicht können Sie das herausfinden, indem Sie sich die Abfrageprotokoll .
Si mysql binlog aktiviert ist, können Sie die vom Benutzer ausgeführten Befehle überprüfen, indem Sie Folgendes ausführen folgenden Befehl in der Linux-Konsole ausführt, indem er das Verzeichnis mysql binlog aufruft
mysqlbinlog binlog.000001 > /tmp/statements.sql
ermöglichen.
[mysqld]
log = /var/log/mysql/mysql.log
oder das allgemeine Protokoll wird sich auf die Leistung von mysql auswirken
Wenn Sie keine Lust haben, Ihre MySQL-Konfiguration zu ändern, können Sie einen SQL-Profiler wie "Neor Profile SQL" verwenden. http://www.profilesql.com .
Nachdem ich Pauls Antwort gelesen hatte, suchte ich nach weiteren Informationen über https://dev.mysql.com/doc/refman/5.7/en/query-log.html
Ich habe einen wirklich nützlichen Code von einer Person gefunden. Hier ist die Zusammenfassung des Kontextes.
(Hinweis: Der folgende Code stammt nicht von mir)
Dieses Skript ist ein Beispiel für eine saubere Tabelle, die Ihnen helfen wird, die Größe Ihrer Tabelle zu reduzieren. Nach einem Tag gibt es etwa 180k Abfragen im Protokoll. (In einer Datei wären das 30 MB pro Tag)
Sie müssen eine zusätzliche Spalte hinzufügen (event_unix) und dann können Sie dieses Skript verwenden, um das Protokoll sauber zu halten... es aktualisiert den Zeitstempel in einen Unix-Zeitstempel, löscht die Protokolle, die älter als 1 Tag sind, und aktualisiert dann die event_time in Timestamp von event_unix... klingt ein bisschen verwirrend, aber es funktioniert großartig.
Befehle für die neue Spalte:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Bereinigungsskript:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Der Dank geht an Sebastian Kaiser (Originalautor des Codes).
Ich hoffe, dass es für jemanden genauso nützlich ist wie für mich.
- See previous answers
- Weitere Antworten anzeigen