QA@IT

MYSQLのgeneral_log(一般クエリログ)の設定について

26668 PV

【環境】
os ver:CnetOS 5.10
mysql ver:5.6

お世話になっております。
mysqlのgeneral_log機能について何点か質問させてください。

1.)INSERT・UPDATE・DELETEでcommitされたものだけを取得、または絞り込むことは可能でしょうか?(SELECTやrollbackされた更新は除く)
2.)私の環境ではargumentカラムのSQLにTable名しかでていないのですがSchema名を入れることは可能でしょうか?

目的なのですが、ある環境のDBの更新をそのまま別の環境のDBに当てたいと思い、general_logを利用できないかと思い試しております。(※dumpではなく差分更新で)
もし何か良い方法がございましたら、ご教授いただけると助かります。
何卒宜しくお願い致します。

回答

「ある環境のDBの更新をそのまま別の環境のDBに当てたい」という用途であれば、MySQL のレプリケーションの機能を使うのがいいと思います。

レプリケーションするではなくログファイルを見たいのであれば、general_log ではなく binlog を使うのがいいと思います。binlog はレプリケーションに使用されているもので、更新系クエリだけが記録されています。
バイナリフォーマットですが、mysqlbinlog というコマンドでテキストに変換することができます。

編集 履歴 (0)

>「ある環境のDBの更新をそのまま別の環境のDBに当てたい」という用途であれば、MySQL のレプリケーションの機能を使うのがいいと思います。
おっしゃる通りだと思います。
すいません、一点条件が不足していたのですが今回は任意のタイミングで差分を確認しつつ同期を行いため、
レプリケーション機能だと実現が難しいかと思いました。

バイナリデータということで躊躇していたのですがmysqlbinlogコマンドでテキスト変換可能ということで
binlogの方を試してみたいと思います。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。