sql >> データベース >  >> NoSQL >> MongoDB

rs.initiate()を呼び出さずにmongodbレプリケーションセットを初期化する方法は?

    短い答え/tl;dr

    いいえ。

    少し長い答え

    いいえ、シェルを使用するのは理にかなっているためです。

    回答

    レプリカセットを設定する場合、通常は複数のメンバーがいます。レプリカセットが初期化されるまで、どのメンバーも必要な構成を保持していません。レプリカセットを初期化するノードがプライマリになり、構成が保存されます。ここで、rs.addを使用してメンバーを追加します コマンドまたはrs.reconfigを使用して 。次に、プライマリが追加されたメンバーに接続し、構成が同期され、その他のことが行われます。あるノードに障害が発生し、別のノードがプライマリになるという欠点がなく、新しいプライマリが何らかの理由でダウンするまでプライマリのままでいられるように、通常のレプリカセットメンバーを等しくすることをお勧めします。

    では、レプリカセットメンバーを開始する場合、どこから構成を取得する必要がありますか?それが何をしなければならないかを自分で決めますか?それはクラスターではうまく機能しません。他のメンバーとその構成をどのように検出する必要がありますか?レプリカセットのメンバーは異なるデータセンターに存在する可能性があることを忘れないでください。そして、--IamPrimaryDoAsISayがあった場合 オプションで、現在クラスター内に別のプライマリーがあった場合はどうなりますか?そして、複数のメンバーがそのオプションで開始された状況にどのように対処する必要がありますか?他のサーバーのステップダウン?クーラーを交換したからかもしれませんか?または、プライマリがすでに存在する場合、開始したばかりのインスタンスは何もしない必要がありますか?そもそも、このオプションにはどのような意味がありますか?

    そして、シェルからの単一のコマンドを防ぐためだけに、これらすべての問題が発生しますか?

    注:単一のサーバーが必要な場合は、スタンドアロンインスタンス(--replSetのないmongod)を起動するだけです。 オプション)。レプリカセットの可能性を探求する場合は、複数のメンバーが必要です。



    1. サブドキュメント配列のn番目の要素(変数インデックス)に対するMongoDBクエリ

    2. BSON::ObjectIdとMongo::ObjectID

    3. ワーカーの助けを借りてSparkから巨大なMongoDBコレクションを読む

    4. 在庫管理システムのSQLとNoSQL