使用できないノードを含む自己管理型レプリカセットの再構成
項目一覧
過半数 のメンバーが利用可能なときに レプリカセット を再構成するには、 レプリカセットの再構成手順rs.reconfig()
の例に従って、現在の プライマリ に対して 操作を使用します。
このドキュメントでは、 少数 のノード のみ がアクセスできる場合にレプリカセットを再構成する手順について説明します。
たとえば、地理的に分散されたレプリカセットでは、 手順を使用する必要がある場合があります。ここでは、ノードのローカル グループは過半数に到達できません。 この状況の詳細については、「レプリカセットの選挙」を参照してください。
強制的に再構成するによる再構成
この手順により、レプリカセット ノードの大部分がダウンしているかアクセスできなくなっている間に回復できます。 残りのノードに接続し、 force
オプションをrs.reconfig()
メソッドに使用します。
force
オプションはノードに新しい構成を強制します。 この手順は、致命的な中断から回復する目的でのみ使用してください。 再構成するたびにforce
を使用しないでください。 また、自動スクリプトでforce
オプションを使用せず、プライマリがまだ存在する場合は
force
を使用しないでください。
警告
強制的に再構成すると、 "majority"
がコミットした書き込みのロールバックなど、予期しない動作が発生する可能性があります。
再構成を強制するには、以下の手順を行います。
正常に実行されているノードをバックアップします。
有効なノードに接続し、現在の構成を保存します。 構成を保存するための次のサンプルコマンドの例を検討します。
cfg = rs.conf() printjson(cfg) 同じノードで、配列を残りのノードのみに等しく設定して、レプリカセットのダウンしたノードとアクセスできないノードを
members
配列から削除します。 前のステップで作成されたcfg
変数を使用する次の例を考えてみましょう。cfg.members = [cfg.members[0] , cfg.members[4] , cfg.members[7]] 同じノードで、
force
オプションを
true
に設定したrs.reconfig()
コマンドを使用してセットを再構成します。
rs.reconfig(cfg, {force : true}) この操作により、セカンダリに新しい構成が強制されます。 その後、構成は、
members
配列にリストされているすべての正常なノードに伝達されます。 その後、レプリカセットは新しいプライマリを選択します。注意
force : true
を使用すると、レプリカセット構成のバージョン番号は、数十、数百、大幅に増加します。 これは正常であり、ネットワーク パーティションの両方に再構成を強制してネットワーク パーティション分割が終了した場合に、セット バージョンの競合を防ぐように設計されています。障害やパーティションが一時的なものであれば、すぐに削除されたノードをシャットダウンまたは廃止してください。