Remove Members from Replica Set
To remove a member of a replica set use either of the following procedures.
Remove a Member Using rs.remove()
- Shut down the mongod instance for the member you wish to remove. To shut down the instance, connect using the mongo shell and the db.shutdownServer() method.
- Connect to the replica set’s current primary. To determine the current primary, use db.isMaster() while connected to any member of the replica set.
- Use rs.remove() in either of the following forms to remove the member:
rs.remove(“mongod3.example.net:27017”)
rs.remove(“mongod3.example.net”)
MongoDB disconnects the shell briefly as the replica set elects a new primary. The shell then automatically reconnects. The shell displays a DBClientCursor::init call() failed error even though the command succeeds.
Remove a Member Using rs.reconfig()
To remove a member you can manually edit the replica set configuration document, as described here.
- Shut down the mongod instance for the member you wish to remove. To shut down the instance, connect using the mongo shell and the db.shutdownServer() method.
- Connect to the replica set’s current primary. To determine the current primary, use db.isMaster() while connected to any member of the replica set.
- Issue the rs.conf() method to view the current configuration document and determine the position in the members array of the member to remove:
As an example, mongod_C.example.net is in position 2 of the following configuration file:
{ “_id” : “rs”,
“version” : 7,
“members” : [
{
“_id” : 0,
“host” : “mongod_A.example.net:27017”
},
{
“_id” : 1,
“host” : “mongod_B.example.net:27017”
},
{
“_id” : 2,
“host” : “mongod_C.example.net:27017”
}
]
}
- Assign the current configuration document to the variable cfg: cfg = rs.conf()
- Modify the cfg object to remove the member. As an example to remove mongod_C.example.net:27017 use the following JavaScript operation: cfg.members.splice(2,1)
- Overwrite the replica set configuration document with the new configuration by issuing the following: reconfig(cfg). As a result of rs.reconfig() the shell will disconnect while the replica set renegotiates which member is primary. The shell displays a DBClientCursor::init call() failed error even though the command succeeds, and will automatically reconnected.
- To confirm the new configuration, issue rs.conf(). For the example above the output would be:
{
“_id” : “rs”,
“version” : 8,
“members” : [
{ “_id” : 0,
“host” : “mongod_A.example.net:27017”
},
{ “_id” : 1,
“host” : “mongod_B.example.net:27017”
}
]
}
Apply for MongoDB Certification Now!!
https://www.vskills.in/certification/databases/mongodb-server-administrator