-1

Web で見つけたものから、mysql はデータを変更するステートメントを bin ログに保存し、それをスレーブが読み取ります。これらの声明が次にどうなるかは不明のままです。それらはスレーブ サーバーで発生したかのように再生されますか?

たとえば、「UPDATE something SET updatedat = NOW()」のように、条件に現在の時刻を含むクエリがあり、レプリケーションの遅延により、クエリは数秒後にスレーブで終了するとします。表の値は異なりますか?

または、マスター マスター レプリケーションがある場合、時刻 1000 に次のクエリがサーバー 1 で発生します。

UPDATE t SET data = 'old', updatedat = 1000 WHERE updatedat < 1000

サーバー 2 の時刻 1001 で、次のクエリが発生します。

UPDATE t SET data = 'new', updatedat = 1001 WHERE updatedat < 1001

次に、サーバー 2 がサーバー 1 から複製ログをフェッチすると、サーバー 2 の値は「古い」になりますか? もしそうなら、それを避ける方法はありますか?

4

1 に答える 1

2

たとえば、「UPDATE something SET updatedat = NOW()」のように、条件に現在の時刻を含むクエリがあり、レプリケーションの遅延により、クエリは数秒後にスレーブで終了するとします。表の値は異なりますか?

いいえ。レプリケーションは行を複製します。つまり、時間は同じになります。

于 2012-05-03T10:55:49.003 に答える