Remove Members from Replica Set
To remove a member of a replica set use either of thefollowing procedures.
Remove a Member Using rs.remove()
Shut down the
mongod
instance for the member you wish toremove. To shut down the instance, connect using themongo
shell and thedb.shutdownServer()
method.Connect to the replica set’s current primary. To determinethe current primary, use
db.isMaster()
while connected toany member of the replica set.Use
rs.remove()
in either of the following forms toremove the member:
- rs.remove("mongod3.example.net:27017")
- rs.remove("mongod3.example.net")
MongoDB may disconnect the shell briefly if the replica set needs to elect anew primary. The shell then automatically reconnects in such cases. Theshell may display a DBClientCursor::init call() failed
error eventhough the command succeeds.
Remove a Member Using rs.reconfig()
To remove a member you can manually edit the replica setconfiguration document, as describedhere.
Shut down the
mongod
instance for the member you wish toremove. To shut down the instance, connect using themongo
shell and thedb.shutdownServer()
method.Connect to the replica set’s current primary. To determinethe current primary, use
db.isMaster()
while connected toany member of the replica set.Issue the
rs.conf()
method to view the currentconfiguration document and determine the position in themembers
array of the member to remove:
Example
mongod_C.example.net
is in position 2
of thefollowing 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.
Example
To remove mongod_C.example.net:27017
use the followingJavaScript operation:
- cfg.members.splice(2,1)
- Overwrite the replica set configuration document with the newconfiguration by issuing the following:
- rs.reconfig(cfg)
- 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"
- }
- ]
- }