MySQL: Nur Drop/Create-Befehle protokollieren

MySQL: Nur Drop/Create-Befehle protokollieren

Gibt es eine Möglichkeit, nur bestimmte MySQL-Vorgänge zu protokollieren?

Ich muss das Protokoll auf einem Produktionsserver aktivieren, aber nur für Drop/Create-Befehle. Leider ist das Protokollieren von allem langsam und ich brauche nur diese speziellen Befehle.

Antwort1

Es gibt keine ausgeklügelte Methode, Abfragen in MySQL zu protokollieren. Das Einzige, was Sie tun können, ist Folgendes:

Das allgemeine Abfrageprotokoll ist eine allgemeine Aufzeichnung dessen, was mysqld tut. Der Server schreibt Informationen in dieses Protokoll, wenn Clients eine Verbindung herstellen oder trennen, und es protokolliert jede von Clients empfangene SQL-Anweisung. Das allgemeine Abfrageprotokoll kann sehr nützlich sein, wenn Sie einen Fehler bei einem Client vermuten und genau wissen möchten, was der Client an mysqld gesendet hat.

http://dev.mysql.com/doc/refman/5.1/en/query-log.html

Antwort2

Sie können versuchen, Binlog einzuschalten. Die Leistung wird dadurch nicht so stark beeinträchtigt wie bei normalen Protokollen [es werden nur Befehle protokolliert, die die Daten ändern]. Es ist jedoch möglicherweise nicht für Ihre Anforderungen geeignet, wenn Sie beispielsweise protokollieren möchten, von welcher IP-Adresse aus der jeweilige Drop-Befehl ausgegeben wurde.

Antwort3

Es gibt einen sehr schönen Workaround. Übergeben Sie einfach die tailAusgabe von an grep, z. B. so:

$ tail -f /var/log/mysql/mysql.log | grep "update "

verwandte Informationen