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 usingmongosh
and use thedb.shutdownServer()
method. -
Connect to the replica set's current primary. To determine the current primary, use
db.hello()
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 may disconnect the shell briefly if the replica set needs to elect a new primary. The shell then automatically reconnects in such cases. The shell may display a
DBClientCursor::init call() failed
error even though the command succeeds.
Remove a Member Using rs.reconfig()
You can remove a member by reconfiguring the replica set using a replica configuration document where that member is removed from the members
array.
Starting in MongoDB 4.4, rs.reconfig()
allows adding or removing no more than 1
voting
member at a time. To remove multiple voting members from the replica set, issue a series of rs.reconfig()
operations to remove one member at a time. See Reconfiguration Can Add or Remove No More than One Voting Member at a Time for more information.
Procedure
-
Shut down the
mongod
instance for the member you wish to remove. To shut down the instance, connect usingmongosh
and use thedb.shutdownServer()
method. -
Connect to the replica set's current primary. To determine the current primary, use
db.hello()
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 themembers
array of the member to remove:Example
mongod_C.example.net
is in position2
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.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:
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" } ] }