2

バイナリ ログからの抜粋を見ると、次の 2 つのステートメントが時系列順不同でログに書き込まれていることがわかります。

#160628 17:32:46 server id 2220  end_log_pos 64812204   Query   thread_id=157061        exec_time=0     error_code=0
SET TIMESTAMP=1467153166/*!*/;
UPDATE `table` SET `field` = "a";
/*!*/;
# at 64812204
--
#160628 17:32:36 server id 2220  end_log_pos 64895850   Query   thread_id=157062        exec_time=0     error_code=0
SET TIMESTAMP=1467153156/*!*/;
UPDATE `table` SET `field` = "b";
/*!*/;
# at 64895850

コード ブロック内を強調表示する方法がわかりませんが、重要な部分は次のとおりです。

first statement - end_log_pos 64812204, SET TIMESTAMP=1467153166

second statement - end_log_pos 64895850, SET TIMESTAMP=1467153156

そのため、マスターが最初のステートメントを最後に実行し、スレーブが 2 番目のステートメントを最後に実行したため、これによりマスターとスレーブの非同期化が発生しました。

誰でもこの理由を理解するのを手伝ってもらえますか? thread_id 157062 を持つすべてのステートメントが最初に実行されましたが、thread_id 157061 を持つステートメントの後にログに書き込まれたことに気付きました。

助けてくれてありがとう。

4

0 に答える 0