Quantcast
Channel: StackExchange Replication Questions
Viewing all articles
Browse latest Browse all 17268

How to set a mongodb node to return as the primary of a replication set?

$
0
0

There is this question here:

How to force a mongod to become primary in a replica set?

But it was not the answer I was looking for.

and there is the question below, which could be related but it is not the same.

How to force a delayed member to become primary in case of failure in mongodb

and this question which is nearly a duplicate, but deals with version 2.6.11 and mine is version 3.0 and 3.2. Plus I don't want to use force : 1 unless I need to.

Force a Member to Become Primary in mongodb

I have been struggling to put in practice the majority described in the answer there, maybe with an example or clarification, therefore this question.

I had my replication working fine, 3 nodes, node1 is the primary.

when I run the following command

//-----------------------------
//check the status of the replication
//-----------------------------
rs.status()

I get this result:

{
    "set" : "Krishna",
    "date" : ISODate("2016-04-26T14:59:40.263Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "jpb01275:37001",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 1022,
            "optime" : Timestamp(1461678841, 1),
            "optimeDate" : ISODate("2016-04-26T13:54:01Z"),
            "electionTime" : Timestamp(1461682464, 1),
            "electionDate" : ISODate("2016-04-26T14:54:24Z"),
            "configVersion" : 239068,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "jpb01275:37002",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 1022,
            "optime" : Timestamp(1461678841, 1),
            "optimeDate" : ISODate("2016-04-26T13:54:01Z"),
            "lastHeartbeat" : ISODate("2016-04-26T14:59:40.206Z"),
            "lastHeartbeatRecv" : ISODate("2016-04-26T14:59:40.179Z"),
            "pingMs" : 0,
            "configVersion" : 239068
        },
        {
            "_id" : 2,
            "name" : "jpb01275:37003",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 1022,
            "optime" : Timestamp(1461678841, 1),
            "optimeDate" : ISODate("2016-04-26T13:54:01Z"),
            "lastHeartbeat" : ISODate("2016-04-26T14:59:40.238Z"),
            "lastHeartbeatRecv" : ISODate("2016-04-26T14:59:39.593Z"),
            "pingMs" : 0,
            "configVersion" : 239068
        }
    ],
    "ok" : 1
}

what happened is that I had to stop node1 (jpb01275:37001) and the node2 became the primary. When I started node1 again, I wanted it to become the primary again.

what I did is

logged into node2 and node3 run the following command on then, one after another:

rs.stepDown()

and the node1 came back as a primary.

I also tried the following on node1, but it did not work for me.

//-----------------------------
// reconfigure the replica set
// because I stopped this server and now it is secondary
// I want it back to primary
//-----------------------------

cfg = rs.conf()

printjson(cfg)

cfg.members = [cfg.members[0] , cfg.members[1] , cfg.members[2]]

rs.reconfig(cfg, {force : true})

what is the correct, safest way to bring back node1 and set it as a primary for this replication?


Viewing all articles
Browse latest Browse all 17268

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>