Docs Menu

replica setプライマリ

プライマリはレプリカセットの中で書込み操作を受け付ける唯一のノードです。MongoDB はプライマリに書込み (write) 操作を適用し、その操作をプライマリの oplog にレコードします。セカンダリ ノードは、このログを複製し、データセットに操作を適用します。

次の 3 つのメンバーのreplica setでは、プライマリがすべての書き込み操作を受け入れます。 次に、セカンダリはoplogを複製してデータに適用します。

Diagram of default routing of reads and writes to the primary.
クリックして拡大します

replica setのすべてのメンバーは読み取り操作を受け入れることができます。 ただし、既定では、アプリケーションは読み取り操作をプライマリ メンバーに指示します。 デフォルトの読み取り動作の変更の詳細については、「 読み取り設定 」を参照してください。

レプリカセットには、最大 1 つのプライマリを含めることができます。[1] 現在のプライマリが利用できなくなった場合、選挙によって新たなプライマリが決まります。詳細については、「レプリカセットの選挙」を参照してください。

次の 3 ノードのレプリカセットでは、プライマリが使用できなくなります。これにより選挙がトリガーされ、残りのセカンダリの 1 つを新たなプライマリとして選出します。

Diagram of an election of a new primary. In a three member replica set with two secondaries, the primary becomes unreachable. The loss of a primary triggers an election where one of the secondaries becomes the new primary
クリックして拡大します
[1]状況によっては、 replica set内の 2 つのノードが一時的に自分たちがプライマリであると認識することがありますが、最大でそのうちの 1 つが{ w: "majority" }書き込み懸念で書き込みを完了できます。 { w: "majority" }書き込みを完了できるノードは現在のプライマリであり、もう一方のノードは、通常はネットワークパーティションが原因で降格をまだ認識していない以前のプライマリです。これが発生すると、以前のプライマリに接続するクライアントは、読み取り設定primaryを要求したにもかかわらず、古いデータを検出する可能性があり以前のプライマリへの新しい書き込みは最終的にロールバックされます。