MySQL-Queries mit Wireshark analysieren

Für MySQL gibt es zwar etliche Tools zur Performance-Analyse, aber auch mit einfachen Mitteln wie tcpdump/Wireshark kann man sich behelfen.
Zunächst schneiden wir mit tcpdump die Daten der MySQL-Verbindung mit:

# tcpdump -s 0 -w mysql.pcap -i any port 3306

Zu beachten ist dabei, dass MySQL standardmäßig auf seinen Unix-Socket verbindet, wenn man als MySQL-Host “localhost” verwendet. Dieses Problem lässt sich umgehen, indem man stattdessen zu “127.0.0.1 verbindet.
Nachdem wir unsere Queries mitgeschnitten haben, können wir die .pcap-Datei in Wireshark öffnen. Über Statistics -> IO Graph lassen sich dann entsprechende Graphen generieren:
mysql-wireshark
Über die Filter können wir uns Graphen zu bestimmten Queries generieren. Beispielsweise:

  • mysql.query matches “SELECT*”
  • mysql.query matches “INSERT*”
  • mysql.query matches “UPDATE*”
  • mysql.query matches “SELECT*FROM “
  • mysql.query == “BEGIN” || mysql.query == “COMMIT”