MongoDB不能正确复制

我使用mongoDB为我的应用程序托pipe在3个亚马逊实例。 我有一个具有最高优先级的主节点(100)和2个优先级为99和98的辅助节点。几天前,我在访问主节点时开始获取MongoCursorExceptions。 我认为这与我的主服务器资源耗尽和响应速度慢有关,所以我决定将其中一个辅助节点切换到主节点。

我把优先级从100,99和98改为1,100,98,但是这并没有将辅助服务器切换到主服务器。 在检查我的副本集的状态时,我发现3个节点没有正确同步,因为optime超过了17个小时。 真正令人担忧的是两个辅助节点的运行时间是不变的,而对于主节点来说,它的持续增加。 我还通过使用slaveOk查询来validation我的辅助节点没有最新的数据。 以下是我在主节点上的状态:

PRIMARY> rs.status() { "set" : "rs_a", "date" : ISODate("2012-02-28T09:34:50Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "server1.com:27018", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "optime" : { "t" : 1330421648000, "i" : 2 }, "optimeDate" : ISODate("2012-02-28T09:34:08Z"), "self" : true }, { "_id" : 1, "name" : "server2.com:27018", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 3510, "optime" : { "t" : 1330358351000, "i" : 1 }, "optimeDate" : ISODate("2012-02-27T15:59:11Z"), "lastHeartbeat" : ISODate("2012-02-28T09:34:50Z"), "pingMs" : 0 }, { "_id" : 2, "name" : "server3.com:27018", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 3510, "optime" : { "t" : 1330358351000, "i" : 1 }, "optimeDate" : ISODate("2012-02-27T15:59:11Z"), "lastHeartbeat" : ISODate("2012-02-28T09:34:50Z"), "pingMs" : 0 } ], "ok" : 1 } 

我在日志中找不到多less东西。 less数情况下,辅助服务器上的日志报告存在连接到主服务器的问题。 但有趣的是,所有回写都在辅助节点上正确完成。 我希望所有的服务器都是最新的,所以我可以从任何节点读取,因为这就是为什么我使用mongoDB的原因。

我设法通过在辅助节点上重新启动mongod来解决此问题。 我认为节点已经进入了一个陈旧的状态。