13

My config file is:

systemLog:
    destination: file
    logAppend: true
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
    journal:
        enabled: true
replication:
   replSetName: "rs0"
net:
   bindIp: 127.0.0.1
   port: 27017
security:
     authorization: enabled

So, I'm successfully connecting via mongod process: enter image description here

Then connecting to mongo and trying to open databases and collections: enter image description here

And getting an error:

2018-07-07T15:40:25.092+0300 E QUERY    [thread1] Error: error: {
        "operationTime" : Timestamp(0, 0),
        "ok" : 0,
        "errmsg" : "node is not in primary or recovering state",
        "code" : 13436,
        "codeName" : "NotMasterOrSecondary",
        "$clusterTime" : {
                "clusterTime" : Timestamp(0, 0),
                "signature" : {
                        "hash" : BinData(0,"FshG5mLBvAQUizPHXGfCITV4ZKA="),
                        "keyId" : NumberLong("6573732769795407873")
                }
        }
}

To avoid this error, I'm using command rs.initiate() like: enter image description here But what does this error mean? Thanks.

1 Answer 1

22

You've configured this node as a replica set member:

 replication:
     replSetName: "rs0"

On startup a new MongoDB server does not have a replica set configuration yet. The server will be in an unknown replica set member state until you either add this member to an existing replica set configuration or use rs.initiate() to establish it as the first member of a new replica set.

You can confirm the current state using rs.status(). A server without any configuration will report something similar to the following in MongoDB 4.0 (the exact output may vary by server version):

> rs.status()
{
    "operationTime" : Timestamp(0, 0),
    "ok" : 0,
    "errmsg" : "no replset config has been received",
    "code" : 94,
    "codeName" : "NotYetInitialized",
    "$clusterTime" : {
        "clusterTime" : Timestamp(0, 0),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

Once added to a replica set, you can use rs.status() and rs.conf() to check the current replica set status and configuration respectively.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.