2012-05-03 10 views
-1

私はWebで見つけたものから、mysqlはビンログのデータを変更するステートメントを保存します。ステートメントはスレーブによって読み込まれます。不明なことは次のステートメントでどうなるかということです。彼らはスレーブサーバーで起こったかのように再生されますか?mysqlレプリケーションはどのように機能しますか?

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

またはマスター・マスター・レプリケーションがある場合は、時間1000年で次のクエリは、サーバ1に起こります。次のクエリが発生し、サーバ2上の時間1001で

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

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

その後サーバ2はサーバ1からの複製ログを取得しますが、サーバ2の値は「古い」でしょうか?もしそうなら、それを避ける方法はありますか?例えば

答えて

2

、「NOW = updatedat SET UPDATE何か()」のような、そしてによるレプリケーションの遅延のために、条件付きで現在の時刻との問い合わせがあると言って、クエリがスレーブで秒のカップルを終了後で。テーブルの値が異なるのでしょうか?

号複製時間が同じ

なることを意味する行を複製し
関連する問題