web-dev-qa-db-ja.com

レプリカセットを使用してMongoDBローカルホストをリモートサーバーに複製および同期する方法

最初に2つのノード(プライマリとセカンダリ)を2つの異なるポートの同じホストマシンで起動しました。セカンダリとして機能します。そのためには、ローカルホストでセカンダリを削除し、以下のステータスを確認してから、同じレプリカにリモートIPを追加しようとしましたが、以下で説明するエラーが表示されます。

"members" : [
            {
                "_id" : 0,
                "name" : "localhost:27017",
                "health" : 1,
                "state" : 1,
                "stateStr" : "PRIMARY",
                "uptime" : 5359,
                "optime" : {
                    "ts" : Timestamp(1502370582, 1),
                    "t" : NumberLong(1)
                },
                "optimeDate" : ISODate("2017-08-10T13:09:42Z"),
                "electionTime" : Timestamp(1502366671, 1),
                "electionDate" : ISODate("2017-08-10T12:04:31Z"),
                "configVersion" : 4,
                "self" : true
            }
        ],
        "ok" : 1
    }

myreplset:PRIMARY> config = {_id:"myreplset", members:[          {_id:0, Host:"localhost:27017"},          {_id:1, Host:"192.168.205.59:27017"} ]          };
    {
        "_id" : "myreplset",
        "members" : [
            {
                "_id" : 0,
                "Host" : "localhost:27017"
            },
            {
                "_id" : 1,
                "Host" : "192.168.205.59:27017"
            }
        ]
    }
    myreplset:PRIMARY> rs.initiate(config);
    {
        "info" : "try querying local.system.replset to see current configuration",
        "ok" : 0,
        "errmsg" : "already initialized",
        "code" : 23,
        "codeName" : "AlreadyInitialized"
    }



myreplset:PRIMARY> rs.add("192.168.205.59:27017"); 
{ "ok" : 0,
 "errmsg" : "Either all Host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2", 
"code" : 103, "codeName" : "NewReplicaSetConfigurationIncompatible"
 }
1
user132483

Rs.add( "Host:port")コマンドを使用して、レプリカセットに新しいノードを追加してください。

主な問題は、ローカルホストとIPアドレスを混在させることができないことです。 1つのメンバーがローカルホスト上にある場合、すべてのメンバーがローカルホスト上になければなりません

もちろん手順を使用することができます:

var cfg=rs.conf()
cfg.members
<copy that to text editor and make changes>
cfg.members=<paste here edited members section>
rs.reconfig(cfg)
1
JJussi