自己管理型レプリカセット プロトコル バージョン
MongoDB はレプリカセット プロトコル バージョン1のみをサポートしています( pv1
)。 すべての新しいレプリカセットのデフォルトはpv1
です。
書込みの保持
w:1
書込み (write)
pv1
を使用すると、 catchUpTimeoutMillis
を使用して、フェイルオーバーの迅速化とw:1
書込み(write)の保持のどちらを優先するかを設定できます。
w: "majority"
書込み (write)
pv1
は確認済みのw:
"majority"
書込み(write)の保持を保証します。
可用性
pv1
は MongoDB バージョン3.2以降で使用可能で、すべての新しいレプリカセットのデフォルトです。
バイト
pv1
は、ベクトルを使用しません。 個々のノードは特定の選挙で候補者に投票したり、候補者に投票したりできますが、個別に選挙を単独で拒否した(中止)ことはできません。
同時プライマリの検出
状況によっては、 replica set内の 2 つのノードが一時的に自分たちがプライマリであると認識することがありますが、最大でそのうちの 1 つが{ w:
"majority" }
書き込み懸念で書き込みを完了できます。 { w: "majority" }
書き込みを完了できるノードは現在のプライマリであり、もう一方のノードは、通常はネットワークパーティションが原因で降格をまだ認識していない以前のプライマリです。これが発生すると、以前のプライマリに接続するクライアントは、読み取り設定primary
を要求したにもかかわらず、古いデータを検出する可能性があり、以前のプライマリへの新しい書き込みは最終的にロールバックされます。
pv1
は というタームの概念を使用します。 これにより、同時プライマリをより早く検出し、短期間に複数の選挙で成功させることができます。
選挙に戻る
pv1
では、使用可能なpriority
が最も高いセカンダリが選挙を呼び出すよう「ベストエフォート」による試行が行われます。 これにより、優先順位の高いノードが選挙を呼び出すことができるため、連続した選挙が行われる可能性があります。
ただし、 pv1
の場合 :
優先順位の高いノードが現在のプライマリから10秒以内にのみ実行されるように制限されました。
アービタは、候補者と同等かそれ以上の優先順位を持つ正常なプライマリを検出した場合、選挙でいずれも投票しません。
double投票
pv1
は、1 つのノードの選挙呼び出しでのdouble投票を防止します。 This is achieved through its use of terms.