node is not in primary or recovering state
-
06-01-2021 - |
سؤال
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:
Then connecting to mongo
and trying to open databases and collections:
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:
But what does this error mean? Thanks.
المحلول
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.