======Overview======
Replica configuration can be changed fairly easy. The steps to do that are:
- Save Configuration
- Edit configuration
- Enable Configuration
Simple as that:
====Save the configuration====
[root@lparamongo mongo]# mongo --port 9005
MongoDB shell version: 2.6.12
connecting to: 127.0.0.1:9005/test
testset:PRIMARY> rs.status()
{
"set" : "testset",
"date" : ISODate("2018-03-24T22:07:37Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "lparamongo:9005",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 2172,
"optime" : Timestamp(1521929109, 1),
"optimeDate" : ISODate("2018-03-24T22:05:09Z"),
"electionTime" : Timestamp(1521927136, 2),
"electionDate" : ISODate("2018-03-24T21:32:16Z"),
"self" : true
},
{
"_id" : 1,
"name" : "lparbmongo:9005",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1914,
"optime" : Timestamp(1521929109, 1),
"optimeDate" : ISODate("2018-03-24T22:05:09Z"),
"lastHeartbeat" : ISODate("2018-03-24T22:07:36Z"),
"lastHeartbeatRecv" : ISODate("2018-03-24T22:07:35Z"),
"pingMs" : 0,
"syncingTo" : "lparamongo:9005"
},
{
"_id" : 2,
"name" : "lparcmongo:9005",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 148,
"optime" : Timestamp(1521929109, 1),
"optimeDate" : ISODate("2018-03-24T22:05:09Z"),
"lastHeartbeat" : ISODate("2018-03-24T22:07:35Z"),
"lastHeartbeatRecv" : ISODate("2018-03-24T22:07:36Z"),
"pingMs" : 0,
"syncingTo" : "lparamongo:9005"
}
],
"ok" : 1
}
testset:PRIMARY> conf = rs.conf()
{
"_id" : "testset",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "lparamongo:9005"
},
{
"_id" : 1,
"host" : "lparbmongo:9005"
},
{
"_id" : 2,
"host" : "lparcmongo:9005"
}
]
}
====Reconfigure the target member====
testset:PRIMARY> conf.members[2].hidden=true
true
testset:PRIMARY> conf.members[2].priority=0
0
testset:PRIMARY> conf
{
"_id" : "testset",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "lparamongo:9005"
},
{
"_id" : 1,
"host" : "lparbmongo:9005"
},
{
"_id" : 2,
"host" : "lparcmongo:9005",
"hidden" : true,
"priority" : 0
}
]
}
testset:PRIMARY>
This reconfiguration, put the 3rd member in hidden and with priority (0) meaning that:
- lparacmongo is passive node
- He cannot become primary
====Enable Configuration====
To enable configuration, simple issue the following command on the primary:
testset:PRIMARY> rs.reconfig(conf)
2018-03-24T23:20:07.513+0100 DBClientCursor::init call() failed
2018-03-24T23:20:07.515+0100 trying reconnect to 127.0.0.1:9005 (127.0.0.1) failed
2018-03-24T23:20:07.515+0100 reconnect 127.0.0.1:9005 (127.0.0.1) ok
reconnected to server after rs command (which is normal)
testset:PRIMARY> rs.status()
{
"set" : "testset",
"date" : ISODate("2018-03-24T22:20:14Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "lparamongo:9005",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 2929,
"optime" : Timestamp(1521930007, 1),
"optimeDate" : ISODate("2018-03-24T22:20:07Z"),
"electionTime" : Timestamp(1521927136, 2),
"electionDate" : ISODate("2018-03-24T21:32:16Z"),
"self" : true
},
{
"_id" : 1,
"name" : "lparbmongo:9005",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 7,
"optime" : Timestamp(1521930007, 1),
"optimeDate" : ISODate("2018-03-24T22:20:07Z"),
"lastHeartbeat" : ISODate("2018-03-24T22:20:13Z"),
"lastHeartbeatRecv" : ISODate("2018-03-24T22:20:13Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "syncing to: lparamongo:9005",
"syncingTo" : "lparamongo:9005"
},
{
"_id" : 2,
"name" : "lparcmongo:9005",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 7,
"optime" : Timestamp(1521930007, 1),
"optimeDate" : ISODate("2018-03-24T22:20:07Z"),
"lastHeartbeat" : ISODate("2018-03-24T22:20:13Z"),
"lastHeartbeatRecv" : ISODate("2018-03-24T22:20:12Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "syncing to: lparamongo:9005",
"syncingTo" : "lparamongo:9005"
}
],
"ok" : 1
}
testset:PRIMARY>
After the sync has been done, you should receive a normal hearthbeat message:
testset:PRIMARY> rs.status()
{
"set" : "testset",
"date" : ISODate("2018-03-24T22:23:07Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "lparamongo:9005",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 3102,
"optime" : Timestamp(1521930007, 1),
"optimeDate" : ISODate("2018-03-24T22:20:07Z"),
"electionTime" : Timestamp(1521927136, 2),
"electionDate" : ISODate("2018-03-24T21:32:16Z"),
"self" : true
},
{
"_id" : 1,
"name" : "lparbmongo:9005",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 180,
"optime" : Timestamp(1521930007, 1),
"optimeDate" : ISODate("2018-03-24T22:20:07Z"),
"lastHeartbeat" : ISODate("2018-03-24T22:23:07Z"),
"lastHeartbeatRecv" : ISODate("2018-03-24T22:23:07Z"),
"pingMs" : 0,
"syncingTo" : "lparamongo:9005"
},
{
"_id" : 2,
"name" : "lparcmongo:9005",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 180,
"optime" : Timestamp(1521930007, 1),
"optimeDate" : ISODate("2018-03-24T22:20:07Z"),
"lastHeartbeat" : ISODate("2018-03-24T22:23:07Z"),
"lastHeartbeatRecv" : ISODate("2018-03-24T22:23:06Z"),
"pingMs" : 0,
"syncingTo" : "lparamongo:9005"
}
],
"ok" : 1
}