我正在使用 MongoDB 5.0 在 Windows 10 计算机上部署我的第一个副本集。 出于本教程的目的,我希望所有服务器都在我的计算机上的不同端口上运行。
A)
我创建了我的第一个服务器:
mongod --replSet rs0 --port 27018 --dbpath C:\data\R0S1
我打开了另一个命令行提示符,并使用
mongo --port 27018
连接到它。
我使用命令 rs.initiate()
启动了设置。
B)
我使用以下命令创建了第二个和第三个服务器:
mongod --replSet rs0 --port 27019 --dbpath C:\data\R0S2
mongod --replSet rs0 --port 27020 --dbpath C:\data\R0S3
(我在新的命令行提示中运行了每个命令)
C)
我通过连接到主服务器(在 27018 与
mongo --port 27018
) 与 :
rs.add("localhost:27019")
rs.add("localhost:27020")
现阶段,一切都按预期进行。 跑步
rs.conf()
给了我:
{
"_id" : "rs0",
"version" : 5,
"term" : 1,
"members" : [
{
"_id" : 0,
"host" : "localhost:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "localhost:27019",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "localhost:27020",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
}
],
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("61cc297329dca2f0673c2cff")
}
}
D) 在新的命令行提示符中,我创建了我的第四个服务器(其想法是使其成为仲裁器):
mongod --replSet rs0 --port 30000 --dbpath C:\data\arb
我这里有一个问题。 此新服务器的日志文件包含以下错误:
{"t":{"$date":"2021-12-29T10:50:51.767+01:00"},"s":"我", "c":"-",
"id":4939300, "ctx":"HMAC 的监控密钥","msg":"无法 刷新密钥缓存","attr":{"error":"NotYetInitialized: 无法使用 非本地读取关注,直到副本集完成 正在初始化。","nextWakeupMillis":19200}}
当连接到主服务器并尝试执行“rs.addArb(localhost:30000)”时,该命令会阻塞并且不执行任何操作,因为我相信端口 30000 上的服务器上出现上述错误。
您对发生的事情以及如何解决我的问题有任何想法吗?
---- 编辑 1 ----
下面是我的 mongod.cfg 文件:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: C:\Program Files\MongoDB\Server\5.0\data
journal:
enabled: true
# engine:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: C:\Program Files\MongoDB\Server\5.0\log\mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
#processManagement:
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
这可能是由于 mongodb 5.0 作为默认设置的一部分引入了多数读取关注。 如果将读取关注设为多数,请检查此项,然后将其更改为 2。 db.adminCommand({ "getDefaultRWConcern" : 1 })
这可能是 mongodb 的问题 - https://www.mongodb.com/community/forums/t/single-node-replicaset-never-finishing-instanciating-error-cannot-use-non-local-read-concern -直到副本集完成初始化/164815/3