replica setプライマリ
プライマリはレプリカセットの中で書込み操作を受け付ける唯一のノードです。MongoDB はプライマリに書込み操作を適用し、その操作をプライマリの oplog に記録します。セカンダリ ノードはこの記録を複製し、独自のデータセットに操作を適用します。
次の 3 つのメンバーのreplica setでは、プライマリがすべての書き込み操作を受け入れます。 次に、セカンダリはoplogを複製してデータに適用します。
クリックして拡大します
replica setのすべてのメンバーは読み取り操作を受け入れることができます。 ただし、既定では、アプリケーションは読み取り操作をプライマリ メンバーに指示します。 デフォルトの読み取り動作の変更の詳細については、「 読み取り設定 」を参照してください。
レプリカセットには、最大 1 つのプライマリを含めることができます。[1] 現在のプライマリが利用できなくなった場合、選挙によって新たなプライマリが決まります。詳細については、「レプリカセットの選挙」を参照してください。
次の 3 ノードのレプリカセットでは、プライマリが使用できなくなります。これにより選挙がトリガーされ、残りのセカンダリの 1 つを新たなプライマリとして選出します。
クリックして拡大します
[1] | 状況によっては、 replica set内の 2 つのノードが一時的に自分たちがプライマリであると認識することがありますが、最大でそのうちの 1 つが{ w:
"majority" } 書き込み懸念で書き込みを完了できます。 { w: "majority" } 書き込みを完了できるノードは現在のプライマリであり、もう一方のノードは、通常はネットワークパーティションが原因で降格をまだ認識していない以前のプライマリです。これが発生すると、以前のプライマリに接続するクライアントは、読み取り設定primary を要求したにもかかわらず、古いデータを検出する可能性があり、以前のプライマリへの新しい書き込みは最終的にロールバックされます。 |