我有一個從MySQL 5.5.20(基於行)的二進制日誌轉儲。現在我的奴隸停止,因爲UPDATE事件是INSERT事件之前: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
正如你可以看到後面的第二個時間戳是二進制日誌(1327402566 < - > 1327402568)。 @ 1是主鍵。這兩種情況下都是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複製代碼中遇到一個bug,因爲'UPDATE'不應該在INSERT出現之前將它寫入binlog。 – Romain