strace
Der schnellste Weg, um Live-MySQL / MariaDB-Abfragen zu sehen, ist die Verwendung des Debuggers. Unter Linux können Sie strace
zum Beispiel Folgendes verwenden:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Da es viele maskierte Zeichen gibt, können Sie die Ausgabe von strace durch Piping (fügen Sie einfach |
zwischen diesen beiden Einzeilern hinzu) oben in den folgenden Befehl formatieren :
grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
Sie sollten also ziemlich saubere SQL-Abfragen ohne Zeitaufwand sehen, ohne die Konfigurationsdateien zu berühren.
Dies ersetzt natürlich nicht die unten beschriebene Standardmethode zum Aktivieren von Protokollen (bei der der SQL Server neu geladen wird).
dtrace
Verwenden Sie MySQL-Tests, um die Live-MySQL-Abfragen anzuzeigen, ohne den Server zu berühren. Beispielskript:
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
printf("Query: %s\n", copyinstr(arg1));
}
Speichern Sie das obige Skript in einer Datei (wie watch.d
) und führen Sie Folgendes aus:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Weitere Informationen : Erste Schritte mit DTracing MySQL
Gibbs MySQL Spyglass
Siehe diese Antwort .
Protokolle
Hier sind die Schritte, die für Entwicklungsvorschläge nützlich sind.
Fügen Sie diese Zeilen in Ihre ~/.my.cnf
oder global ein my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Pfade: /var/log/mysqld.log
oder /usr/local/var/log/mysqld.log
funktionieren möglicherweise auch abhängig von Ihren Dateiberechtigungen.
Starten Sie dann MySQL / MariaDB neu durch ( sudo
ggf. Präfix mit ):
killall -HUP mysqld
Dann überprüfen Sie Ihre Protokolle:
tail -f /tmp/mysqld.log
Wechseln Sie nach Abschluss general_log
zu 0
(damit Sie es in Zukunft verwenden können), entfernen Sie die Datei und starten Sie den SQL Server erneut : killall -HUP mysqld
.