三名成员,小学和初级二级 - 和第三个“其他” - 我找不到关于该状态的任何信息,不知道该怎么做,我重新启动了实例,但总是出现同样的情况。找不到该州的文件。
我是副本集的新手 - 任何帮助都会受到赞赏。
答案 0 :(得分:5)
我能够复制这个场景,这是我从命令提示符显示的mongod rs.status()
OTHER
时得到的{
"state" : 10,
"stateStr" : "REMOVED",
"uptime" : 41,
"optime" : {
"ts" : Timestamp(1518192445, 1),
"t" : NumberLong(26)
},
"optimeDate" : ISODate("2018-02-09T16:07:25Z"),
"ok" : 0,
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig",
"operationTime" : Timestamp(1518192445, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1518193246, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
:
members
让我们假设有错误的mongod是你{J}的rs.conf()
数组中的第3个成员(索引2){J}。转到主服务器并从副本集中删除有问题的mongod:
rsconf = rs.conf()
rsconf.members = [rsconf.members[0], rsconf.members[1]] //index 0 and 1 are your working members, we're omitting the 3rd member which is faulty.
rs.reconfig(rsconf);
现在重新启动显示为OTHER
的mongod。然后再次访问您的主要成员并再次添加该成员。我们假设IP为10.00.00.00
,端口为27019
:
rs.add("10.00.00.00:27019")
这解决了问题,状态从OTHER更改为SECONDARY。
请注意,reconf将重置所有客户端连接。您可能需要大约一分钟的维护时间来进行重新配置。
答案 1 :(得分:4)
配置设置不正确。
您可以使用以下命令进行初始化:
rs.initiate({
_id: "rs0",
version: 1,
members: [
{ _id: 0, host : "localhost:27017" }
]
}
)
如果您已经启动,可能会收到像我这样的错误消息:
singleNodeRepl:OTHER> rs.initiate({ _id: "rs0", members: [ { _id: 0, host : "localhost:27017" } ] } )
{
"info" : "try querying local.system.replset to see current configuration",
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23,
"codeName" : "AlreadyInitialized"
}
解决方案是reconf
mongo:
singleNodeRepl:OTHER> rsconf = rs.conf()
singleNodeRepl:OTHER> rsconf.members = [{_id: 0, host: "localhost:27017"}]
[ { "_id" : 0, "host" : "localhost:27017" } ]
singleNodeRepl:OTHER> rs.reconfig(rsconf, {force: true})
{ "ok" : 1 }
singleNodeRepl:OTHER>
singleNodeRepl:SECONDARY>
singleNodeRepl:PRIMARY>
答案 2 :(得分:2)
对于后代 - 问题是实例无法与主要或辅助同步,因为它太长了。它进入了尝试主要和次要,过度,从未被允许同步的状态。这最终创建了一个8GB的日志文件,我无法打开,因此我当时看不到问题。解决方案显然是停止错误的mongo实例 - 转储其数据 - 并再次启动它,就像它是副本集的新成员一样。
答案 3 :(得分:0)
对我来说,解决方案是:断开与robot3t的连接,并断开我的PC上使用的所有mongodb Gui(指南针..)。然后当我重新打开mongo shell时,它将作为主要连接。
答案 4 :(得分:-1)
更改优先级
假设您有三个成员
rs0:OTHER> cfg = rs.conf()
rs0:OTHER> cfg.members[0].priority = 1
rs0:OTHER> cfg.members[1].priority = 0.5
rs0:OTHER> cfg.members[2].priority = 0.5
rs0:OTHER> rs.reconfig(cfg, {force: true})
rs0:OTHER> rs.config()
rs0:PRIMARY>