2012-02-10 5 views
1

を確保する私は2つのMySQL 5.0は、MySQLのレプリケーションマスター - マスターと同じ状態に

の間で設定のレプリケーションをマスターするマスターを持っている私の要件は、自分のアプリケーションを起動する前に、私はデータベースが同一であることを保証しなければならないということである私が確認したいと思います"show slave status"コマンドの "seconds_behind_master"が0秒であることは、同期されている2つのデータベースを考慮するのに十分であることを意味しますか?

http://dev.mysql.com/doc/refman/5.0/en/show-slave-status.html

あなた

+0

1つのデータベースにのみ書き込みますか?そうでない場合は、あなたのデータはすべて挿入順に依存していますか?(自動インクリメントフィールドと思われますか?) –

+0

データは挿入の順序に依存しません。また、レプリケーションの競合と調整を避けるために、1つのサーバーをauto_incrementにのみ奇数を設定し、もう1つをevenに設定しています。 – Stainedart

答えて

2

ありがとういいえ、それはデータベースがスレーブがマスタのバイナリログからすべての文を実行しただけのこと、同一であることを保証するのに十分ではありません。スレーブデータベース上の大量のデータを更新または削除することはできますが、master = 0の後ろにはまだ秒数がありますが、スレーブは必ずマスターと同じではありません。

実際にデータベースが同一であることを確認するには、Perconaのpt-table-checksumなどのツールを使用する必要があります。

+0

しかし私の場合は両方ともマスターです。いずれかのサーバーで実行された変更は、自動的に別のサーバーに複製される必要があります。その場合、仕事の後ろに秒がかかりますか? – Stainedart

+1

レプリケーションをセットアップするときにDBが同一であり、sql_bin_log = 0でステートメントが実行されていないと仮定すると、それらが同じであると予想するのが妥当です。しかし、もしあなたが本当にあなたがチェックサムのテーブルのようないくつかの余分な検証を行う必要があることを確認したい場合。 –

+0

私はperconaのユーティリティを見てきました。これは主にlinux(.deb .rpm .tar.gz)のターゲットになっているようですが、このdbはWindowsサーバー2003環境でホストされているので、Windowsの代替ですか? – Stainedart

1

マスターツーマスターレプリケーションではサーバー間のアトミック性が保証されないため、実際には保証されません。

また、0を1回読み取っても意味がない場合がありますが、エラーが報告されていない場合は、一貫して0が読み取られると、サーバーが同期されていることがわかります。

私は10秒間毎秒それを読んでいると言いますが、エラーがなくても0であれば、チェックサムを比較するには不十分です。

関連する問題