0
0
MongodbHow-ToBeginner · 4 min read

How to Create Replica Set in MongoDB: Step-by-Step Guide

To create a replica set in MongoDB, start by configuring each MongoDB instance with the --replSet option and then initiate the replica set using rs.initiate() in the Mongo shell. This sets up multiple MongoDB servers to replicate data for high availability and fault tolerance.
📐

Syntax

To create a replica set, you first start each mongod instance with the --replSet option followed by the replica set name. Then, connect to one instance using the Mongo shell and run rs.initiate() with a configuration object.

  • mongod --replSet <replicaSetName>: Starts a MongoDB instance as part of the replica set.
  • rs.initiate(config): Initializes the replica set with the given configuration.
  • config: An object specifying members and settings of the replica set.
shell
mongod --replSet myReplicaSet

// In mongo shell
rs.initiate({
  _id: "myReplicaSet",
  members: [
    { _id: 0, host: "localhost:27017" },
    { _id: 1, host: "localhost:27018" },
    { _id: 2, host: "localhost:27019" }
  ]
})
💻

Example

This example shows how to start three MongoDB instances as a replica set named rs0 and initialize it with rs.initiate(). It demonstrates the basic setup for replication.

shell
// Start three mongod instances in separate terminals or background
mongod --port 27017 --dbpath /data/db1 --replSet rs0
mongod --port 27018 --dbpath /data/db2 --replSet rs0
mongod --port 27019 --dbpath /data/db3 --replSet rs0

// Connect to one instance
mongo --port 27017

// Initialize replica set
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "localhost:27017" },
    { _id: 1, host: "localhost:27018" },
    { _id: 2, host: "localhost:27019" }
  ]
})

// Check replica set status
rs.status()
Output
{ "set" : "rs0", "date" : ISODate("2024-06-01T12:00:00Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "localhost:27017", "stateStr" : "PRIMARY" }, { "_id" : 1, "name" : "localhost:27018", "stateStr" : "SECONDARY" }, { "_id" : 2, "name" : "localhost:27019", "stateStr" : "SECONDARY" } ] }
⚠️

Common Pitfalls

Common mistakes when creating a replica set include:

  • Not starting mongod instances with the --replSet option, so they don't join the replica set.
  • Using inconsistent replica set names across instances.
  • Not specifying unique _id values for each member in the configuration.
  • Trying to initiate the replica set before all members are running.

Always ensure all members are running and reachable before initiating.

shell
// Wrong: Starting mongod without replSet option
mongod --port 27017 --dbpath /data/db1

// Right: Start with replSet option
mongod --port 27017 --dbpath /data/db1 --replSet rs0
📊

Quick Reference

CommandDescription
mongod --replSet Start mongod instance as part of replica set
rs.initiate(config)Initialize replica set with configuration
rs.status()Check current status of replica set
rs.add(host)Add a new member to the replica set
rs.remove(host)Remove a member from the replica set

Key Takeaways

Start each mongod instance with the --replSet option and the same replica set name.
Use rs.initiate() with a configuration object to initialize the replica set.
Ensure each member has a unique _id and correct host address in the config.
All members must be running and reachable before initiating the replica set.
Use rs.status() to verify the replica set is properly configured and running.