11

私は3つのノードを持つレプリカセットでmongodbを使用しています.

私の現在のセットアップでは、192.168.1.100 がプライマリで、その他がセカンダリです。ダウンしています。

アプリケーションが有効になるように、192.168.1.102 を強制的にプライマリにしたいと考えています。192.168.1.102 ノードを強制的に変換してプライマリ NODE にする方法はありますか。

4

5 に答える 5

24

以下の手順でmongodサービスを再起動せずに達成できます-

27017 ポートの localhost で実行されていると仮定して、アクティブなメンバーに接続します。

mongo --port 27017

会員IDはこちらから

> use admin
> rs.status()

アクティブなメンバー ID が 1 であるとします。次に、以下の手順に従ってレプリケーションを再構成します。

> cfg = rs.conf()
> cfg.members = [cfg.members[1]]
> rs.reconfig(cfg, {force : true})

これにより、現在のアクティブ メンバーがプライマリになり、アプリケーションと書き込みが可能になります。

于 2016-02-22T09:12:27.950 に答える
7

大部分のメンバーにアクセスできない場合は、こちらの手順に従ってレプリカ セットを再構成できます。

レプリカ セットにはノードが 1 つしか残っていないため、データは複製されません。これら 2 つのノードが有効になったら、それらを元に戻すことをお勧めします。

于 2013-05-02T08:24:17.577 に答える
4

この状況を克服するための解決策は、レプリカ セットにノードが 1 つしか残っておらず、そのノードがセカンダリ (優先度 0) の場合、最初にレプリカ セットからノード抽出ノードをシャットダウンします (mongod.conf のコメント repliSet 行または mongo を起動することによって)。 mongo コマンド ラインに移動し、system.replset からのローカル変更レコードを使用してレコードを削除し、ノードをスタンドアロン mongodb として起動します :)

于 2013-05-03T11:11:08.873 に答える
1

この場合、手動の介入なしではありません。また、別の問題が発生します。セットの大部分はオフラインになります。これは、優先度が 0 でなくても、残りのレプリカ メンバーがプライマリにならないことを意味します。

rs.reconfig()代わりに、セットの大部分を元に戻すか、セットの 2 つのデッド メンバーを削除する必要があります。

ここで例などを見つけることができます:http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

于 2013-05-02T09:25:48.867 に答える