Question

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.

Était-ce utile?

La solution

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top