最初に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"
}
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)