web-dev-qa-db-ja.com

MySQL binログにデータがありませんか?

バイナリログの先頭と末尾を作成しようとしていますが、不足しています。 mysqlbinlogから次のようなエントリがたくさんありますが、そこにあるはずのログデータがありません。

# at 1050548
#130617 18:40:03 server id 1  end_log_pos 1050619   Query   thread_id=844988    exec_time=0 error_code=0
SET TIMESTAMP=1371519603/*!*/;
BEGIN
/*!*/;
# at 1050619
# at 1050782
#130617 18:40:03 server id 1  end_log_pos 1050809   Xid = 33121028
COMMIT/*!*/;

Phpmyadminで実行されたステートメントのmysqlbinlog出力で期待されるSQLを取得しますが、他のPHPベースのリモートWebサーバーからのステートメントは記録されていないように見えるため、不可解です。

私の設定ビンロギングは次のとおりです。

bin_log = /path_to_sql_incrementals
binlog_ignore_db = mysql

ロギングオプションがありませんか?

Mysql 5.0.95/CentOS 5.9

1
Greg

更新クエリで直接database.table構文を使用すると、MySQLはバイナリログファイルにログを記録しません(例:UPDATE Foo.Bar SET ...)。私のWebアプリケーションはデフォルトのデータベースを指定しないため、データがログに記録されることはありません。

http://dev.mysql.com/doc/refman/5.0/en/replication-rules-db-options.html

INSERTおよびUPDATEクエリの前にmysql_select_dbを呼び出す問題を解決しました。

0
Greg

--base64-output=decode-rowsおよび--verboseオプションをmysqlbinlogとともに使用する必要があります。そうしないと、ログにあるすべてのものが常に表示されるとは限りません。

構成からbinlog_ignore_dbを削除することも検討する必要があります。これは、mysqlスキーマへの変更のログ記録を防ぐだけでなく、USE mysql方法のためにUSE別のデータベースまで 複製ルールが解釈されます

1