【发布时间】: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