MySQL 5.5.20(行ベース)からバイナリログダンプがあります。 ( - > 1327402568 1327402566 <)MySQLバイナリログのタイムスタンプは非順次ですか?
5424240-SET TIMESTAMP=1327402568/*!*/;
5424241-BEGIN
5424242-/*!*/;
5424243-# at 25715325
5424244-# at 25715417
5424245:#120124 11:56:08 server id 1 end_log_pos 25715417 Table_map: `auto`.`data_export` mapped to number 9142508
5424246-#120124 11:56:08 server id 1 end_log_pos 25716169 Update_rows: table id 9142508 flags: STMT_END_F
5424247:### UPDATE auto.data_export
5424248-### WHERE
5424249-### @1=350049
5424250-### @2='0522'
5424251-### @3='50591'
5424252-### @4=5
--
5424457-SET TIMESTAMP=1327402566/*!*/;
5424458-BEGIN
5424459-/*!*/;
5424460-# at 25717962
5424461-# at 25718054
5424462:#120124 11:56:06 server id 1 end_log_pos 25718054 Table_map: `auto`.`data_export` mapped to number 9142508
5424463-#120124 11:56:06 server id 1 end_log_pos 25718444 Write_rows: table id 9142508 flags: STMT_END_F
5424464:### INSERT INTO auto.data_export
5424465-### SET
5424466-### @1=350049
5424467-### @2='0522'
5424468-### @3='50591'
5424469-### @4=5
あなたは第二のタイムスタンプは、バイナリログの後半で見ることができるように:UPDATEイベントがINSERTイベントの前にあるので、今、私の奴隷が停止しました。 @がプライマリキーです。どちらの場合も350049です。しかし、最初に私はINSERTステートメントをUPDATEよりも期待しています...
これはどのように可能ですか?そして、どうすればこの問題を解決できますか?
Could not execute Update_rows event on table auto.data_export; Can't find record in 'data_export', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.001459, end_log_pos 25716169
おかげ
これらのステートメントはどちらも同じトランザクションから実行されましたか? – Romain
この場合、MyISAMテーブルを使用しています。INSERTにはDELAYEDステートメントが使用されています。しかし、遅延挿入が実際に書き込まれる前にUPDATEで動作することはできません...(私は更新前にテーブルを選択するので、更新の心配はありません)。 MyISAMテーブルにはテーブルレベルのロックがあり、トランザクションはありません...私はここでヒントを得ていませんか?どのようにこの行動を説明しますか? –
この場合、おそらくMySQLレプリケーションコードのバグに遭遇しました。これは、 'UPDATE'が' INSERT'がある前にbinlogに行ってはならないからです。 – Romain