我已经启动了 mongodb 服务器,并在端口 27001 上启用了副本集名称“rs01”。
然后启动另一个命令窗口以在同一端口上启动 mongo db。
状态表明“rs0”不是副本集的成员。
rs0:OTHER> rs.status()
{
"operationTime" : Timestamp(1552575009, 1),
"ok" : 0,
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig",
"$clusterTime" : {
"clusterTime" : Timestamp(1552575009, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试注册会员,则会出现以下错误消息。任何帮助,将不胜感激。
rs0:OTHER> rs.initiate({_id:"rs0",members[{_id:0,host:"localhost:27001"}]})
2019-03-14T22:14:39.840+0530 E QUERY [js] SyntaxError: missing : after property id @(shell):1:30
rs0:OTHER> rsconf={ _id:"rs0", members: [ { _id: 0,host:"localhost:27001"}]}
{
"_id" : "rs0",
"members" : [
{
"_id" : 0,
"host" : "localhost:27001"
}
]
}
rs0:OTHER> rs.initiate(rsconf)
{
"operationTime" : Timestamp(1552575009, 1),
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23,
"codeName" : "AlreadyInitialized",
"$clusterTime" : {
"clusterTime" : Timestamp(1552575009, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
蒙古数据库
小智 5
在我的情况下(副本集中具有单个节点的本地实例)。我跑了rs.config()
一下发现members[0].host不正确。
我将配置复制/粘贴到rs.reconfig
命令中,编辑了主机 ID,并且必须用作{"force":true}
第二个参数。
我不知道这样的“暴力”方法是否适用于不同的设置。
rs.reconfig({
"_id" : "rs0",
"version" : 1.0,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0.0,
"host" : "2f0bd979cc69:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1.0,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1.0
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000.0,
"heartbeatTimeoutSecs" : 10.0,
"electionTimeoutMillis" : 10000.0,
"catchUpTimeoutMillis" : -1.0,
"catchUpTakeoverDelayMillis" : 30000.0,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1.0,
"wtimeout" : 0.0
},
"replicaSetId" : ObjectId("6033b612985ce53324d7446c")
}
}, {"force":true})
Run Code Online (Sandbox Code Playgroud)
根据错误,您似乎没有正确配置副本集。如何设置 MongoDB 副本集,您可以在这里找到。
例如,我正在此处编写设置 MongoDB 副本集的步骤
1)启动一个mongod实例。
2)启动另一个mongod实例。
3) 开始复制。
启动所有 mongod 节点实例后,连接到任一节点并启动 mongo shell,然后输入命令提示符
rs.initiate()
例如
现在 mongo shell 提示符将更改为 yournodeinstancename:PRIMARY>
您还可以使用 rs.status() 方法检查状态。
rs.status()
有关 rs.status() 的更多信息,请参阅此处和此处的MongoDB 文档
4) 将 MongoDB 实例添加到副本集。
rs.add();
5) 检查状态。
您可以通过运行以下命令来检查副本集的状态
rs.status();
6) 获取副本集的概览以及当前节点是否为主节点
rs.isMaster()
归档时间: |
|
查看次数: |
34937 次 |
最近记录: |