-1

众所周知,mongodb 的 oplog 是有限的。

如果我只是创建一个新的从站,那么数据库中的所有内容都还没有同步。数据库中的所有内容都比任何 oplog 都大。

那么我该如何解决呢?这是否意味着我们不能创建一个比 oplog 更大的新从站?除了那个oplog,mongodb还有其他同步数据库的机制吗?

如果是真的,那么它是如何完成的?

所以有什么问题?

4

1 回答 1

2

如果您的数据库大小合理,并且您有快照,则可以复制文件(由启动时的 --dbpath 标志或在配置文件中指定)以允许新的副本集成员更快地上线。但是,仍可能会发生初始同步。

从概念上讲,会发生以下事情

  1. 启动新成员作为副本集的一部分
  2. 将其添加到 rs.conf()
  3. 新的副本集与最近的副本集同步(可能是主副本或辅助副本),并将开始从中提取数据(初始同步)并在 oplog 中标记一个点以供其自己参考。
  4. 然后,新的辅助节点将从它自己的时间戳应用 oplog,该时间戳是从其他副本集成员复制的。

如果同步失败,将发生另一个初始同步(从一开始)。对于非常大的数据集,同步可能需要一些时间。

回复您的问题

这是否意味着我们不能创建一个比 oplog 更大的新从站?

您可以创建和添加比 oplog 更大的新成员

除了那个oplog,mongodb还有其他同步数据库的机制吗? 是的,上面提到的初始同步和文件副本。

于 2013-02-27T10:13:34.787 回答