MySQL: ドロップ/作成コマンドのみをログに記録する

MySQL: ドロップ/作成コマンドのみをログに記録する

特定の MySQL 操作のみをログに記録する方法はありますか?

運用サーバーでログを有効にする必要がありますが、ドロップ/作成コマンドに対してのみ有効にする必要があります。残念ながら、すべてをログに記録するのは遅く、必要なのはこれらの特定のコマンドだけです。

答え1

MySQL でクエリをログに記録する洗練された方法はありません。実行できるのは次のことだけです。

一般クエリ ログは、mysqld が行っていることの一般的な記録です。クライアントが接続または切断すると、サーバーはこのログに情報を書き込み、クライアントから受信した各 SQL ステートメントを記録します。一般クエリ ログは、クライアントにエラーがあると思われる場合や、クライアントが mysqld に送信した内容を正確に知りたい場合に非常に役立ちます。

http://dev.mysql.com/doc/refman/5.1/en/クエリログ.html

答え2

binlog をオンにしてみることもできます。通常のログほどパフォーマンスに悪影響を与えることはありません [データを変更するコマンドのみがログに記録されます]。ただし、たとえば、指定されたドロップ コマンドがどの IP から発行されたかをログに記録したい場合、ニーズに適さない可能性があります。

答え3

非常に良い回避策があります。tailの出力を に渡すだけですgrep。たとえば次のようになります。

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

関連情報