【问题标题】:Initialise mongodb replica set never completing初始化 mongodb 副本集永远不会完成
【发布时间】:2015-06-18 17:56:26
【问题描述】:

我正在尝试初始化一个 mongodb 副本集,但每当我添加新节点时,它永远不会超过状态 3 (RECOVERING)。这是来自 rs.status() 的快照:

rs0:OTHER> rs.status()
{
    "set" : "rs0",
    "date" : ISODate("2015-04-27T14:09:21.973Z"),
    "myState" : 3,
    "members" : [
        {
            "_id" : 0,
            "name" : "10.0.1.184:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 6899,
            "optime" : Timestamp(1430143759, 9),
            "optimeDate" : ISODate("2015-04-27T14:09:19Z"),
            "lastHeartbeat" : ISODate("2015-04-27T14:09:20.133Z"),
            "lastHeartbeatRecv" : ISODate("2015-04-27T14:09:20.160Z"),
            "pingMs" : 0,
            "electionTime" : Timestamp(1430127299, 1),
            "electionDate" : ISODate("2015-04-27T09:34:59Z"),
            "configVersion" : 109483
        },
        {
            "_id" : 1,
            "name" : "10.0.1.119:27017",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 6899,
            "lastHeartbeat" : ISODate("2015-04-27T14:09:20.133Z"),
            "lastHeartbeatRecv" : ISODate("2015-04-27T14:09:20.166Z"),
            "pingMs" : 0,
            "configVersion" : 109483
        },
        {
            "_id" : 2,
            "name" : "10.0.1.179:27017",
            "health" : 1,
            "state" : 3,
            "stateStr" : "RECOVERING",
            "uptime" : 15651,
            "optime" : Timestamp(1430136863, 2),
            "optimeDate" : ISODate("2015-04-27T12:14:23Z"),
            "infoMessage" : "could not find member to sync from",
            "configVersion" : 109483,
            "self" : true
        }
    ],
    "ok" : 1
}

偶尔会在新节点上看到“找不到要同步的成员”的信息消息。我注意到当前主节点上的 oplog 只有 0.12 小时(1.7GB),而且大约需要 0.12 小时(1.7GB)。复制大部分数据集需要 2 小时(从网络使用情况来看)。

假设 oplog 必须大于这 2 小时才能成功完成初始同步是否正确?

【问题讨论】:

  • oplog 窗口是一个估计值,但是是的 - 您的 oplog 必须足够大,以容纳在初始同步的数据复制阶段发生的所有写入流量。这可以通过在您的 10.0.1.179:27017 中搜索“too stale to catch up”来确认,这表明您已脱离 oplog。
  • 你的问题解决了吗?
  • @kommradHomer - 是的,谢谢。我们的数据吞吐量对于默认的 OPLOG 大小来说太高了。将 OPLOG 增加到 50GB 可以完成同步。
  • @MarcF 我很高兴你完成了它。你会为后代回答你自己的问题吗?

标签: mongodb


【解决方案1】:

确实有必要让 oplog 大于(在时间上)比在两个副本之间同步数据的预期时间。磁盘很便宜,所以我们将 OPLOG 增加到 50GB 并重新启动同步,第一次工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-20
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多