6

Node0 と Node1 の 2 つのノードでレプリカ セットを設定しようとしています。Node0 から、「rs0」という名前のレプリカ セットを初期化し、それに Node1 を追加しました。問題は、それがセカンダリ ノードではなくプライマリ ノードとして追加され、最終結果が 2 つのプライマリ ノードを持つレプリカ セットになることです。

これはrs.status()Node0からコマンドを実行した結果です

   "set" : "rs0",
        "date" : ISODate("2012-10-23T21:03:37Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "Node0:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 61185,
                        "optime" : Timestamp(1350967947000, 1),
                        "optimeDate" : ISODate("2012-10-23T04:52:27Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "Node1:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 58270,
                        "optime" : Timestamp(1350956423000, 1),
                        "optimeDate" : ISODate("2012-10-23T01:40:23Z"),
                        "lastHeartbeat" : ISODate("2012-10-23T21:03:37Z"),
                        "pingMs" : 0
                }
        ],

Node1 から同じコマンドを実行すると、リストされるノードはそれ自体だけです。pingMs が 0 であることに注意してください。3 番目のノードまたはアービターを追加しようとすると、同様の結果が得られます。それぞれがプライマリとして追加され、pingMS は常に 0 です。

4

2 に答える 2

5

rs.initiate()両方のサーバーで実行していると述べました。これは、1 つのみで行う必要があります。

各ノードの dbpath ディレクトリを削除して、ゼロから始めることをお勧めします (db が空でない場合は、以前のデータをバックアップしてください)。次に、すべてのmongodプロセスを開始し、そのうちの1つにログインしてから呼び出します

  • rs.initiate()
  • rs.add(<other node 1>)

もう一方のノードは、最初のノードからレプリカ セットの構成を自動的に取得します。追加するノードごとに `rs.add() を繰り返します。

于 2012-10-25T03:13:51.623 に答える
0

rs.initiate()私は同じ状況に遭遇し、 2 つのインスタンスで間違って実行しました。これを解決するには、本来あるべき 2 番目のインスタンスをシャットダウンし、データ ディレクトリを削除して、インスタンスを再起動しました。再起動すると、レプリカ セットのメンバーとして適切に検出され、適切に同期されます。最も重要なのは、プライマリが 1 つだけであることです。

私の知る限り、レプリカ セットはノード上のすべてのデータをレプリケートするため、この操作は危険ではありません。確かに、セカンダリ ノードのシャットダウン後にデータ ディレクトリを移動するだけで、何か問題が発生した場合に備えてバックアップを保持できます。

于 2012-12-16T22:41:37.873 に答える