web-dev-qa-db-ja.com

MySQLで実行されたDDLステートメントのみを追跡する方法

MySQLで実行されたDDLステートメントのみを追跡でき、DMLステートメントは追跡できませんか?有効にするためにbinlog/generalログを使用したくありません。 DDLステートメントのみを追跡したいだけです。

MySQLサイトの以下のリンクを確認しました。しかし、サイトでは、このログを有効/無効にする方法については言及されていません。

http://dev.mysql.com/doc/refman/5.6/en/ddl-log.html

My.cnfに以下の行を追加して、MySQLサービスを再起動しました。 MySQLは正常に再起動しましたが、以下のパスにDDLログが見つかりませんでした。

ddl-log =/var/log/ddl.log

この機能はリリースされていますか、それとも将来リリースされる予定ですか。

1
Phanindra

MySQLのドキュメントをもう一度ご覧ください

今説明したようなメタデータ操作の記録はMySQLデータディレクトリのddl_log.logファイルに書き込まれますです。これはバイナリファイルです。人間が読めるようにすることを目的としていないため、いかなる方法でも変更しないでください。

ddl_log.logは、メタデータステートメントの記録に実際に必要になるまで作成されないため、このファイルが完全に通常の方法で機能しているMySQLサーバーに存在しない可能性があります。

このファイルに関連付けられているユーザー設定可能なサーバーオプションまたは変数はありません

サーバー変数を調べましたが、ddl_logオプション はありません。

ステータス変数(Com_alter_table)からALTER TABLEコマンドをカウントする

提案

MySQL 5.6を使用していて、弾丸を噛んでmysqlbinlogを使用して出力を解析する場合は、外部サーバーでmysqlbinlogを設定し、出力をDDLの独自のログファイルにリダイレクトする必要があります。 stop-never も使用する必要があります。 MySQLドキュメンテーションが stop-never と言っているのは次のとおりです。

このオプションは --read-from-remote-server と共に使用されます。 mysqlbinlogにサーバーへの接続を維持するように指示します。それ以外の場合、最後のログファイルがサーバーから転送されると、mysqlbinlogは終了します。 stop-never--to-last-log を意味するため、転送する最初のログファイルのみをコマンドラインで指定する必要があります。

--stop-neverは通常、 --raw とともに使用してライブバイナリログバックアップを作成しますが、--raw なしで使用して連続テキストを維持することもできます。サーバーが生成したログイベントの表示

このオプションはMySQL 5.6.0で追加されました。

2
RolandoMySQLDBA