MongoDB 无法正确复制

MongoDB 无法正确复制

我正在使用 mongoDB 来管理托管在 3 个 Amazon 实例上的应用程序。我有一个优先级最高的主节点 (100) 和 2 个优先级分别为 99 和 98 的辅助节点。几天前,我在访问主节点时开始收到 MongoCursorExceptions。我认为这与我的主服务器资源耗尽且响应缓慢有关,因此我决定将其中一个辅助节点切换为主节点。

我将优先级从 100、99 和 98 更改为 1、100、98,但这并没有将我的辅助服务器切换为主服务器。在检查我的副本集的状态时,我发现 3 个节点没有正确同步,因为 optime 落后了 17 个小时以上。真正令人担忧的是,两个辅助节点的 optime 都是恒定的,而主节点的 optime 却不断增加。我还使用 slaveOk 查询验证了我的辅助节点没有最新数据。以下是我在主节点上获得的状态:

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
}

我在日志中找不到太多信息。有几次,辅助服务器上的日志报告连接到主服务器时出现问题。但有趣的是,所有写回都在辅助节点上正确完成。我希望所有服务器始终保持最新状态,这样我就可以从任何节点读取数据,因为这就是我首先使用 mongoDB 的原因。

答案1

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

相关内容