我有一个MongoDB副本集,其副本不会超过STARTUP状态。 数据库很大,但是现在应该已经移到STARTUP2了。 正确的端口是开放的,因为我可以从主要连接到辅助,反之亦然。
接下来的步骤解决了类似的麻烦:
在PRIMARY成员:
rs.status() { "set" : "ShardD", "date" : ISODate("2015-08-28T17:01:40.647Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "host.example.com:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 1167, "optime" : Timestamp(1440780623, 1), "optimeDate" : ISODate("2015-08-28T16:50:23Z"), "electionTime" : Timestamp(1440780252, 2), "electionDate" : ISODate("2015-08-28T16:44:12Z"), "configVersion" : 3, "self" : true }, { "_id" : 1, "name" : "192.0.2.222:27017", "health" : 1, "state" : 0, "stateStr" : "STARTUP", "uptime" : 584, "optime" : Timestamp(0, 0), "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2015-08-28T17:01:40.601Z"), "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), "pingMs" : 0, "configVersion" : -2 }, { "_id" : 2, "name" : "192.0.2.223:27017", "health" : 1, "state" : 0, "stateStr" : "STARTUP", "uptime" : 676, "lastHeartbeat" : ISODate("2015-08-28T17:01:40.643Z"), "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), "pingMs" : 0, "configVersion" : -2 } ], "ok" : 1
}
检查PRIMARY成员的名称(通常它等于“_id”:0)
如果名称具有域名表单,请尝试将名称重写为IP地址。 更改副本集中的主机名 :
cfg = rs.conf() cfg.members[0].host = "192.0.2.221" rs.reconfig(cfg)
它的副本设置到正常状态后。
PS host.example.com已parsing为所有主机上的IP地址。