Add Members to a Replica Set

Add Members to a Replica Set

A replica set can have a maximum of seven voting members. To add a member to a replica set that already has seven votes, you must either add the member as a non-voting member or remove a vote from an existing member. In production deployments you can configure a control script to manage member processes. You can use these procedures to add new members to an existing set. You can also use the same procedure to “re-add” a removed member. If the removed member’s data is still relatively recent, it can recover and catch up easily.

If you have a backup or snapshot of an existing member, you can move the data files (e.g. the dbPath directory) to a new system and use them to quickly initiate a new member. The files must be:

  • A valid copy of the data files from a member of the same replica set. Always use filesystem snapshots to create a copy of a member of the existing replica set. Do not use mongodump and mongorestore to seed a new replica set member.
  • More recent than the oldest operation in the primary’s oplog. The new member must be able to become current by applying operations from the primary’s oplog.

Requirements

  • An active replica set.
  • A new MongoDB system capable of supporting your data set, accessible by the active replica set through the network.

The procedure is as

Prepare the Data Directory – Before adding a new member to an existing replica set, prepare the new member’s data directory using one of the following strategies:

  • Make sure the new member’s data directory does not contain data. The new member will copy the data from an existing member. If the new member is in a recovering state, it must exit and become a secondary before MongoDB can copy all data as part of the replication process. This process takes time but does not require administrator intervention.
  • Manually copy the data directory from an existing member. The new member becomes a secondary member and will catch up to the current state of the replica set. Copying the data over may shorten the amount of time for the new member to become current. Ensure that you can copy the data directory to the new member and begin replication within the window allowed by the oplog. Otherwise, the new instance will have to perform an initial sync, which completely resynchronizes the data, as described in Resync a Member of a Replica Set. Use rs.printReplicationInfo() to check the current state of replica set members with regards to the oplog.

Add a Member to an Existing Replica Set

  • Start the new mongod instance. Specify the data directory and the replica set name. The following example specifies the /srv/mongodb/db0 data directory and the rs0 replica set:

mongod –dbpath /srv/mongodb/db0 –replSet rs0

  • Connect to the replica set’s primary. You can only add members while connected to the primary. If you do not know which member is the primary, log into any member of the replica set and issue the db.isMaster() command.
  • Use rs.add() to add the new member to the replica set. For example, to add a member at host mongodb3.example.net, issue the following command: add(“mongodb3.example.net”)
  • Verify that the member is now part of the replica set. Call the rs.conf() method, which displays the replica set configuration: rs.conf()

To view replica set status, issue the rs.status() method.

Configure and Add a Member – You can add a member to a replica set by passing to the rs.add() method a members document. The document must be in the form of a local.system.replset.members document. These documents define a replica set member in the same form as the replica set configuration document. Specify a value for the _id field of the members document. MongoDB does not automatically populate the _id field in this case. Finally, the members document must declare the host value. All other fields are optional. As an example to add a member with the following configuration:

  • an _id of 1.
  • a hostname and port number of mongodb3.example.net:27017.
  • a priority value within the replica set of 0.
  • a configuration as hidden,

Issue the following:

rs.add({_id: 1, host: “mongodb3.example.net:27017”, priority: 0, hidden: true})

Apply for MongoDB Certification Now!!

https://www.vskills.in/certification/databases/mongodb-server-administrator

Back to Tutorial

Get industry recognized certification – Contact us

Menu