1

I am on Windows 10 Environment. I would like to Implement Replica Set on MongoDB. I am facing some issues..

For that, I cover almost many tutorials to implement the things on Windows Machine.

I want to create a replica set consisting of a primary node and another node, which will be replicating the data.

My structure is like this:

  • Install folder: C:/Programs Files\MongoDb\Server\3.4\bin\
  • Database folder: C:/data/db
  • Log file folder: C:/data/log
  • Config: C:/data/mongod.cfg

I have defined the service with this command:

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

I have started the service with this command:

net start mongodb

It runs successfully.

However, now I am getting problems with replication. What I did to set up the replica set is:

  1. create three subfolders under the data folder named rs1, rs2, rs3, using the command mkdir \data\rs1 \data\rs1 \data\rs2
  2. Implement the Replset for replication of three servers.

My three startup commands are: 1. start mongod --replSet udd --logpath \data\rs1\1.log --dbpath \data\rs1 --port 27017 --smallfiles --oplogSize 64 2. start mongod --replSet udd --logpath \data\rs1\2.log --dbpath \data\rs2 --port 27018 --smallfiles --oplogSize 64 3. start mongod --replSet udd --logpath \data\rs1\3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64

With those running, I can type mongo --port 27017; this connects properly to 127.0.0.1:27017/

Now my problem is that earlier the mongo shell prompt said udd:PRIMARY>; but now it has changed to say: udd:OTHER>

Please guide me how I can move forward with replication; any help is really appreciated.

My rs.reconfig(config,{"force":true}) will be

    udd:OTHER> config =  {_id: "udd", members: [
... {_id: 0, host: "127.0.0.1:27017"},
... {_id: 1, host: "127.0.0.1:27018"},
... {_id: 2, host: "127.0.0.1:27019"}
... ]}
{
        "_id" : "udd",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "127.0.0.1:27017"
                },
                {
                        "_id" : 1,
                        "host" : "127.0.0.1:27018"
                },
                {
                        "_id" : 2,
                        "host" : "127.0.0.1:27019"
                }
        ]
}
udd:OTHER> rs.reconfig(config,{"force":true})
{ "ok" : 1 }
udd:OTHER> rs.status()
{
        "set" : "udd",
        "date" : ISODate("2018-01-31T11:58:15.717Z"),
        "myState" : 2,
        "term" : NumberLong(1),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1517381781, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1517381781, 1),
                        "t" : NumberLong(1)
                }
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "127.0.0.1:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 1506,
                        "optime" : {
                                "ts" : Timestamp(1517381781, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2018-01-31T06:56:21Z"),
                        "configVersion" : 37530,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "127.0.0.1:27018",
                        "health" : 0,
                        "state" : 8,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2018-01-31T11:58:15.677Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "No connection could be made because the target machine actively refused it.",
                        "configVersion" : -1
                },
                {
                        "_id" : 2,
                        "name" : "127.0.0.1:27019",
                        "health" : 0,
                        "state" : 8,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2018-01-31T11:58:15.670Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "No connection could be made because the target machine actively refused it.",
                        "configVersion" : -1
                }
        ],
        "ok" : 1
}
udd:SECONDARY>

Now rs.conf() will be

udd:SECONDARY> rs.conf()
{
        "_id" : "udd",
        "version" : 37530,
        "protocolVersion" : NumberLong(1),
        "members" : [
                {
                        "_id" : 0,
                        "host" : "127.0.0.1:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "127.0.0.1:27018",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "127.0.0.1:27019",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "catchUpTimeoutMillis" : 60000,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("5a715e56bff9fd66ea55b862")
        }
}
udd:SECONDARY>
Vince Bowdren
  • 8,326
  • 3
  • 31
  • 56
Ankit
  • 951
  • 1
  • 9
  • 29
  • 1
    Weird formatting makes the question unreadable. Please read https://stackoverflow.com/help/formatting and fix the typos. The mess with rs0, rs1, rs2, rs3 is really confusing. – Alex Blex Jan 31 '18 at 10:31
  • How are you initiating your replica set? Please show your replica set config. Aslo your output shows a RepSet name of `udd` but starting `mongod` your repSet name is `sfr`. What are you using your `mongo.cfg`? If you're starting `mongod` with command line options?? –  Jan 31 '18 at 10:40
  • @N3i1 Actually I am following the tutuorial steps. I need Only 1 replica set. And yes udd is sfr. for hiding some info i will edit sfr to udd – Ankit Jan 31 '18 at 11:07
  • @AlexBlex really sorry for that. I edited the question. Please go through it if you can. – Ankit Jan 31 '18 at 11:09
  • @N3i1 https://www.youtube.com/watch?v=okrZdlO9_3Q – Ankit Jan 31 '18 at 11:30
  • I already did. error msg is: Already initialized . And It is not on PRIMARY. currently state is OTHER not PRIMARY – Ankit Jan 31 '18 at 11:41
  • You've no mention of running any `rs.` commands in your question –  Jan 31 '18 at 11:46

1 Answers1

0

Clear error message: InvalidReplicaSetConfig

All 3 rep mongod are started, then try:

rs.reconfig({force:true})

db.isMaster()
  • when I will do rs.initiate() it returns error msg: already Initialized. and Pointed to OTHER not on PRIMARY – Ankit Jan 31 '18 at 11:36
  • Question is updated with rs.conf() and rs.status() result – Ankit Jan 31 '18 at 11:50
  • why it will be on secondary not on primary? – Ankit Jan 31 '18 at 12:04
  • The `reconfig force` option will force a reconfiguration even on a secondary. So now you just need to find which one is your primary, problem solved –  Jan 31 '18 at 12:10
  • I solved it. First I will create the service for both the server and then start primary server. Its automatically converted into primary – Ankit Jan 31 '18 at 12:13
  • And Thanks a ton @N3i1. You Supported me from last Hour. Really appreciate for your effort and help – Ankit Jan 31 '18 at 12:14