replica setのMongoDB mongod、冗長性と高可用性を提供する プロセスのグループです。replica setのメンバーは次のとおりです。
- 原発
- プライマリは、すべての書き込み操作を受け取ります。
- セカンダリ
- セカンダリはプライマリからの操作を複製して、同一のデータ設定を維持します。 セカンダリには、特別な使用プロファイル用の追加の構成がある場合があります。 たとえば、セカンダリは 投票なし または 優先度 0 である可能性があります。
The minimum recommended configuration for a replica set is a three member replica set with three data-bearing members: one primary and two secondary members. In some circumstances (such as you have a primary and a secondary but cost constraints prohibit adding another secondary), you may choose to include an arbiter. An arbiter participates in elections but does not hold data (i.e. does not provide data redundancy).
replica set最大 50 のメンバーを含めることができますが、投票メンバーは 7 人だけです。
原発
The primary is the only member in the replica set that receives write operations. MongoDB applies write operations on the primary and then records the operations on the primary's oplog. Secondary members replicate this log and apply the operations to their data sets.
次の 3 つのメンバーのreplica setでは、プライマリがすべての書き込み操作を受け入れます。 次に、セカンダリはoplogを複製してデータに適用します。
replica setのすべてのメンバーは読み取り操作を受け入れることができます。 ただし、既定では、アプリケーションは読み取り操作をプライマリ メンバーに指示します。 デフォルトの読み取り動作の変更の詳細については、「 読み取り設定 」を参照してください。
レプリカセットには、最大 1 つのプライマリを含めることができます。[1] 現在のプライマリが利用できなくなった場合、選挙によって新たなプライマリが決まります。詳細については、「レプリカセットの選挙」を参照してください。
セカンダリ
セカンダリは 、プライマリのデータセットのコピーを保持します。データを複製するために、セカンダリはプライマリのoplog の操作を非同期プロセスで自分のデータセットに適用します。 []レプリカセットには2 1 つ以上のセカンダリを含めることができます。
次の 3 メンバーのreplica setは 2 つのセカンダリ メンバーがあります。 セカンダリはプライマリのoplogを複製し、その操作をデータに適用します。
クライアントはセカンダリにデータを書き込むことはできませんが、セカンダリ メンバーからデータを読み取ることはできます。 クライアントがレプリカ セットに読み取り操作を送信する方法の詳細については、 「読み取り設定」を参照してください。
セカンダリはプライマリになることができます。 現在のプライマリが使用できなくなった場合、 replica setどのセカンダリを新しいプライマリにするかを選択する選挙を開催します。
詳細については、 replica set選挙を参照してください。
セカンダリ メンバーを特定の目的に合わせて構成できます。 セカンダリは次のように構成できます。
選挙でプライマリにならないようにして、セカンダリデータセンターに常駐したり、コールドスタンバイとして機能させたりできるようにします。 優先度 0 のreplica setメンバーを参照してください。
アプリケーションがそこから読み取れないようにすることで、通常のトラフィックから分離する必要があるアプリケーションを実行できるようになります。 非表示のreplica setメンバーを参照してください。
意図せずに削除されたデータベースなどの特定のエラーからの回復に使用するために、実行中の「履歴」スナップショットを保持します。 遅延replica setメンバーを参照してください。
| [2] | replica setのセカンダリ メンバーは、適用に低速操作しきい値よりも長い時間がかかるoplogをログに記録するようになりました。 これらの遅い oplog メッセージ:
プロファイラーは遅い oplog エントリをキャプチャしません。 |
アービタ
状況によっては (プライマリとセカンダリがあるが、コストの制約により別のセカンダリを追加できない場合など)、 replica setにアービターを追加することを選択できます。 アービターはプライマリーの選挙に参加しますが、アービターはデータのコピーを持っていないため、プライマリーになることはできません。
アービターは、正確に 1 選挙票を持っています。 デフォルトでは、アービターの優先度は 0です。
重要
replica setのプライマリ メンバーまたはセカンダリ メンバーもホストするシステムでは、アービターを実行しないでください。
警告
シャーディングされたクラスターのシャードにプライマリセカンダリアービタ(PSA)アーキテクチャを使用すると、データを保持しているセカンダリが利用できない場合に可用性が失われる可能性があります。PSA クラスターは通常のレプリカセットとは異なります。シャーディングされたクラスターでは、操作の確認が必要な残りのクラスター ノードにアービタがある場合には完了できない w: majority 書き込み操作をシャードが実行します。
アービタを追加するには、「自己管理型レプリカセットへのアービタの追加 」を参照してください。
アービターを使用する際の考慮事項については、 replica setアービター」を参照してください。
| [1] | 状況によっては、 replica set内の 2 つのノードが一時的に自分たちがプライマリであると認識することがありますが、最大でそのうちの 1 つが |