Überwachen aller SQL-Abfragen bei MySQL 5.x auf Ubuntu

Im Rahmen meiner Arbeiten an meinen Projekten, beispielsweise meinem CMS ConLite 2.0, und deren Datenbank-Optimierung, sowohl bei der Anzahl der Zugriffe als auch bei der Optimierung der Queries, suchte ich nach einer Möglichkeit der direkten Überwachung. Bei meiner Recherche stieß ich auf den Artikel „Monitor All SQL Queries in MySQL“ und genau das hatte ich gesucht.

MySQL bietet die Möglichkeit alle Anfragen in eine Log-Datei zu schreiben. Dieses sollte man aber nicht in einer produktiven Umgebung tun, denn dieses Logging bedingt eine teilweise extreme Verlangsamung des Servers, genau wie es beispielsweise auch die Slow-Query-Logs tun. Um das Log zu aktivieren muss man in der my.cnf die Auskommentierung der entsprechenden Zeile(n) entfernen.

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Danach ist ein Neustart des MySQL-Servers notwendig

$ sudo service mysql restart

Nun kann man mit dem Befehl,

$ tail -f /var/log/mysql/mysql.log

bei dem man gegebenenfalls noch den Pfad zur Log-Datei ändern muss, das Log live anzeigen lassen. Mit Control-C (Strg-C) kann man die Anzeige beenden. In der Linux-Shell-Ausgabe sieht das dann für einen Aufruf des ConLite 2.0 Demo-Mandanten wie folgt aus

Screenshot - 21.07.2016 - 11:27:31

Ich nutze das unter einer Dual-Monitor-Umgebung, denn so kann ich auf dem einen Bildschirm live das Log beobachten, während ich auf dem anderen die Seite im Browser neu lade.

Ich hoffe ich konnte euch mit diesem Dev-Tipp helfen. Solltet ihr auch Tipps und Tricks bei und/oder zur Entwicklung mit MySQL haben, so freue ich mich über entsprechende Kommentare.Bis dahin… 😉