MongoDB: Replication (Replica Set)

Setting up replica-set in mongodb is show below. Three node replica-set on single server to demostrate. It will have a unique port and log files. Latest version of  mongodb can be downloaded from the link. http://www.mongodb.org/downloads

1 Make three directory in data directory.

[root@centos4 data]# mkdir a
[root@centos4 data]# mkdir b
[root@centos4 data]# mkdir c

2 Start mongod process.

[root@centos4 data]# ../bin/mongod --replSet myRep --dbpath a --port 27001 --oplogSize 50 --smallfiles --logpath log.a --logappend --fork
about to fork child process, waiting until server is ready for connections.
forked process: 1664
all output going to: /usr/local/mongodb-linux-x86_64-2.4.7/data/log.a
child process started successfully, parent exiting
[root@centos4 data]#

[root@centos4 data]# ../bin/mongod --replSet myRep --dbpath b --port 27002 --oplogSize 50 --smallfiles --logpath log.b --logappend --fork
about to fork child process, waiting until server is ready for connections.
forked process: 1714
all output going to: /usr/local/mongodb-linux-x86_64-2.4.7/data/log.b
child process started successfully, parent exiting
[root@centos4 data]#
 

[root@centos4 data]# ../bin/mongod --replSet myRep --dbpath c --port 27003 --oplogSize 50 --smallfiles --logpath log.c --logappend --fork
about to fork child process, waiting until server is ready for connections.
forked process: 1762
all output going to: /usr/local/mongodb-linux-x86_64-2.4.7/data/log.c
child process started successfully, parent exiting
[root@centos4 data]#

3 Check mongod process running.

[root@centos4 data]# ps -ef | grep mongo
root      1664     1  2 02:22 ?        00:00:04 ../bin/mongod --replSet myRep --dbpath a --port 27001 --oplogSize 50 --smallfiles --logpath log.a --logappend --fork
root      1714     1  2 02:24 ?        00:00:02 ../bin/mongod --replSet myRep --dbpath b --port 27002 --oplogSize 50 --smallfiles --logpath log.b --logappend --fork
root      1762     1  3 02:25 ?        00:00:01 ../bin/mongod --replSet myRep --dbpath c --port 27003 --oplogSize 50 --smallfiles --logpath log.c --logappend --fork
[root@centos4 data]#

4 Replica set configuration.

[root@centos4 data]# ../bin/mongo --port 27001
MongoDB shell version: 2.4.7
connecting to: 127.0.0.1:27001/test
>
> cfg = { _id:"myRep",members : [
... { _id:0, host:"centos4:27001"},
... { _id:1, host:"centos4:27002"},
... { _id:2, host:"centos4:27003"}
... ] }
{
    "_id" : "myRep",
    "members" : [
        {
            "_id" : 0,
            "host" : "centos4:27001"
        },
        {
            "_id" : 1,
            "host" : "centos4:27002"
        },
        {
            "_id" : 2,
            "host" : "centos4:27003"
        }
    ]
}
>
 

> cfg
{
    "_id" : "myRep",
    "members" : [
        {
            "_id" : 0,
            "host" : "centos4:27001"
        },
        {
            "_id" : 1,
            "host" : "centos4:27002"
        },
        {
            "_id" : 2,
            "host" : "centos4:27003"
        }
    ]
}
>

> rs.initiate( cfg )
{
    "info" : "Config now saved locally.  Should come online in about a minute.",
    "ok" : 1
}
>
myRep:SECONDARY>

5 Check replica set status.

myRep:PRIMARY> rs.status()
{
    "set" : "myRep",
    "date" : ISODate("2013-12-17T07:47:13Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "centos4:27001",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 1484,
            "optime" : Timestamp(1387266291, 1),
            "optimeDate" : ISODate("2013-12-17T07:44:51Z"),
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "centos4:27002",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 137,
            "optime" : Timestamp(1387266291, 1),
            "optimeDate" : ISODate("2013-12-17T07:44:51Z"),
            "lastHeartbeat" : ISODate("2013-12-17T07:47:12Z"),
            "lastHeartbeatRecv" : ISODate("2013-12-17T07:47:11Z"),
            "pingMs" : 1,
            "syncingTo" : "centos4:27001"
        },
        {
            "_id" : 2,
            "name" : "centos4:27003",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 135,
            "optime" : Timestamp(1387266291, 1),
            "optimeDate" : ISODate("2013-12-17T07:44:51Z"),
            "lastHeartbeat" : ISODate("2013-12-17T07:47:12Z"),
            "lastHeartbeatRecv" : ISODate("2013-12-17T07:47:12Z"),
            "pingMs" : 0,
            "syncingTo" : "centos4:27001"
        }
    ],
    "ok" : 1
}
myRep:PRIMARY>
 

myRep:PRIMARY> rs.conf()
{
    "_id" : "myRep",
    "version" : 1,
    "members" : [
        {
            "_id" : 0,
            "host" : "centos4:27001"
        },
        {
            "_id" : 1,
            "host" : "centos4:27002"
        },
        {
            "_id" : 2,
            "host" : "centos4:27003"
        }
    ]
}
myRep:PRIMARY>
 

myRep:PRIMARY> use local
switched to db local
myRep:PRIMARY> show collections
oplog.rs
slaves
startup_log
system.indexes
system.replset
myRep:PRIMARY> db.system.replset.find().pretty()
{
    "_id" : "myRep",
    "version" : 1,
    "members" : [
        {
            "_id" : 0,
            "host" : "centos4:27001"
        },
        {
            "_id" : 1,
            "host" : "centos4:27002"
        },
        {
            "_id" : 2,
            "host" : "centos4:27003"
        }
    ]
}
myRep:PRIMARY>
 

myRep:PRIMARY> db.isMaster()
{
    "setName" : "myRep",
    "ismaster" : true,
    "secondary" : false,
    "hosts" : [
        "centos4:27001",
        "centos4:27003",
        "centos4:27002"
    ],
    "primary" : "centos4:27001",
    "me" : "centos4:27001",
    "maxBsonObjectSize" : 16777216,
    "maxMessageSizeBytes" : 48000000,
    "localTime" : ISODate("2013-12-17T07:54:30.782Z"),
    "ok" : 1
}
myRep:PRIMARY>
 

 

 

Comments

Execute rs.slaveOk() on secondary mongo node to run command.

Add new comment