0

4ノードのMySQLクラスターのバイナリログから有用な情報を取得しようとしていますが、無駄です。テストとして、マスターで午前11時1分に手動でUPDATEステートメントを実行しました(テーブル内の一部のデータは正常に変更されました)。残念ながら、実行されたステートメントをmysqlbinlogに表示させることができません。

--verboseオプション、-hexdumpオプション、および--base64-output =DECODE-ROWS--verboseを試しました。私が何をしても、実際のステートメントはまだエンコードされているようです(または、UPDATEがあるはずのときにINSERT INTOがあります)。

以下は、-base64-output =DECODE-ROWS--verboseオプションが指定された11:01amテストの関連する出力です。UPDATEステートメントがどこにも見つからないのはなぜですか?また、データベースがINSERT INTOに最適化した場合、少なくとも元のステートメントのテーブル名とその他の部分が表示されないのはなぜですか?

# at 1744
#121213 11:01:56 server id 1  end_log_pos 1808  Query   thread_id=0     exec_time=0   error_code=0
SET TIMESTAMP=1355425316/*!*/;
BEGIN
/*!*/;
# at 1808
# at 1899
# at 1961
# at 2022
#121213 11:01:56 server id 1  end_log_pos 1899  Table_map: `source_words`.`players` mapped to number 1826
#121213 11:01:56 server id 1  end_log_pos 1961  Table_map: `mysql`.`ndb_apply_status` mapped to number 1817
#121213 11:01:56 server id 1  end_log_pos 2022  Write_rows: table id 1817
#121213 11:01:56 server id 1  end_log_pos 2071  Write_rows: table id 1826 flags: STMT_END_F
### INSERT INTO mysql.ndb_apply_status
### SET
###   @1=1
###   @2=14197993649471490
###   @3=''
###   @4=0
###   @5=0
### INSERT INTO source_words.players
### SET
###   @1='834770J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x17yê\x00\x00\x17yê\x00\x00 \x00\x00\x00\x00\x00\x00\x00À'
###   @6=0
# at 2071
#121213 11:01:56 server id 1  end_log_pos 2136  Query   thread_id=0     exec_time=0   error_code=0
SET TIMESTAMP=1355425316/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

ありがとう、ロブ

4

1 に答える 1

1

binlogには、何が変更されたかが記録されますが、必ずしもどのステートメントが原因であるかは記録されません(または、更新によって何も更新されない場合は、何も表示されません)。your BINLOG_FORMATis STATEMENT、al will be statement、for ROWMIXEDの場合、MySQLが適切であると判断した場所とタイミングでこれらのエントリを取得します。binlogは、データベース上のクエリを監視/調査するためのものではありません(そのために一般的なクエリログを使用します)。binlogは、データの変更を記録するためだけに存在するため、バックアップを確実に回復したり、レプリケーションを使用したりできます。人間が読める形式にすることは意図されていませんでした。

また、ビンログされるものとされないものが設定される可能性があり、「デフォルトスキーマ」が接続に大きな影響を与えることにも注意してください。ステートメントが本当に欠落している場合(古いログがローテーションされることに注意してください)、次のことをお勧めしますSHOW VARIABLES LIKE '%binlog%';

于 2012-12-13T19:31:34.493 に答える