質問: my.cnfで、実行されたSQL文をログに出力するよう設定してますが SQL文だけ出力するよう設定することは可能でしょうか? 下記の状態にしたいです。 25427 Query SELECT * FROM hoge ↓ SELECT * FROM hoge 宜しくお願いします。
回答: SQLのみを出力することは不可能だと思います。 ただしスロークエリログをmysqldumpslowツールで解析(集計)させれば、 "SQLのみ"とまではいきませんが近いことが実現可能だと思います。 前提:MySQL5.1以上 my.cnfに以下のように設定し、MySQLを再起動します。 ポイントは[long_query_time = 0]とすることですべてのSQLを記録するようにしていることです。 [mysqld] slow_query_log = 1 slow_query_log_file = [path]/log-slow-queries.log long_query_time = 0 mysqldumpslowツールの使い方は下記に詳しく載っています。 MySQLでのSlowLogの分析方法 > > 以下のコマンドを実行するだけです! > > $ mysqldumpslow -s t ${SlowLogファイル} > ${出力先ファイル} > > 結果は標準出力に出てしまうので、上記のようにファイルにリダイレクトしてください。 > > > 解析結果には必ずSQLの上部にサマリー (Count: ? Time=?s (?s) Lock=?s (?s) Rows=?) が付くので、この行を削除すれば**ほぼ**SQL文のみになります。