2016-04-18 4 views
4

ここでは、複製に関する非常に基本的な質問があります。マスター/スレーブレプリケーションは、書き込みが後で読み取られることを確実にしますか?

マスタースレーブレプリケーションを使用してデータベースをセットアップし、マスターに移動してスレーブに移動する場合、新しく書き込まれたデータが必ずしも読み込みに表示されるとは限りません後で?

たとえば、ユーザーがあなたのWebサイトにコメントを投稿した(書き込み:INSERT INTOコメント...)と、そのページを更新したとします(読み込み:SELECT * FROM comment ...)。 INSERT文がまだ複製されていないスレーブに読み込みが行われるため、コメントのリストに新しいコメントがなくなります。それは、少なくとも一時的に、ACIDの「耐久性」の部分に効果的に違反します。

それは実際にどのように動作しますか?あるいは、ユーザーがいつも書いたことをいつも読めるようにするための方法がありますか?

+0

私はあなたがマスター→スレーブレプリケーションについて正しい考えを持っているとは思わない。スレーブはほとんど常にスレーブと同期しており、INSERTがマスターデータベースに対して行われると、スレーブはINSERTが行われたときにもそのデータを保持します。 – ryekayo

+0

あなたはどのDBMSについて話していますか?どのような複製を設定しましたか? –

答えて

2

マスタ - >スレーブレプリケーションデータベースは、masterデータベースが書き込まれスレーブが読み込まれる場所で動作します。 INSERTがマスターデータベースに作成されると、スレーブはmaster-> slaveが構成され、同期していることを前提にその情報を保持します。例えば、もしそうなら、私は書いた:

INSERT into TEST_TABLE (col1, col2) values ("test", 123);

私はスレーブデータベースに行って、照会した場合:

SELECT col1, col2 FROM TEST_TABLE;

私は、マスター・データベースに挿入された値が表示されます。私はマスター - >スレーブレプリケーションの詳細については、使用しているSQLのフレーバーに関するドキュメントを参照することをお勧めします。コメントに記載されているように、使用しているSQLのフレーバーと、発生頻度を高めるために設定する必要があります。

+1

私は同様の回答を掲載しようとしていたので、ここではコメントします。前述のとおり、どのDBMSを使用しているか、さらに重要なのは、レプリケーションのセットアップ方法です。複製の頻度を示す設定が必要です(通常は数秒です)。あなたが設定したものに応じて、あなたの環境やニーズに応じて異なる必要がなければ、5〜10秒のようなものでなければなりません。 TLDR:データの複製速度はあなた次第です。 – gmiley

+0

その1つの良いキャッチ:) – ryekayo

+0

私は最終的に奴隷がマスターと同じデータを含んでいることを知っています。私は、データがマスタに書き込まれた後、スレーブに複製されるまでの間に何が起こるかを知りたい。 – gesgsklw

関連する問題