如果延迟大于 oplog,mongodb 辅助可以恢复吗?

Can a mongodb secondary recover if the lag is larger then the oplog?

让我们假设由于服务器崩溃没有在给定时间内重新启动而导致次要服务器落后。现在我们有 100 小时的滞后,但是像这样的 10 小时的 oplog

db.printSlaveReplicationInfo()

source: db3
    syncedTo: TIMEINTHEPAST
    360000 secs (100.00 hrs) behind the primary
source: db1
    syncedTo: NOW
    1 secs (0 hrs) behind the primary

但是 oplog 小得多

db.printReplicationInfo()

configured oplog size:   GIVENSIZE
log length start to end: 36000secs (10hrs)

我是否正确地假设这个次级没有机会赶上(正在恢复)?

这种情况如何解决?

答案很简单。二级无法生存。在那种情况下,您对 "re-initialize" 该节点几乎没有不同的可能性。

  • 您停止该节点,清空它的数据目录,重新启动它并让它进行初始同步。

  • 您停止该节点,获取其他健康节点数据文件的快照(或数据文件),重新启动它并让它 "catch" 成为主节点。

在您再次拥有工作副本集后,resize your oplog size to much bigger。好像大了 15 倍。