7

我可以使用具有不同 RAM 量的服务器在 MongoDB 1.8 中设置副本集吗?

  • 服务器1:5GB
  • 服务器2:2GB
  • 服务器3:4GB

如果是,有什么优点和缺点?

4

2 回答 2

5

不,您不需要相等的 RAM。(是的,您可以按照说明设置副本集。)

MongoDB 使用内存映射文件进行所有缓存,这意味着缓存分页由操作系统处理。具有更多内存的副本将在内存中保留更多的数据库;那些更少的人会将更多的分页到磁盘。

如果可以,MongoDB 最终会将整个数据库放入内存中。如果您使用两个副本进行读取,一个副本用于写入,您可能希望使用 5gb 和 4gb 机器进行读取,因此它们更有可能会占用 RAM。

于 2011-05-12T22:48:04.570 回答
3

是的,您可以通过这种方式配置副本集。

如果是,有什么优点和缺点?

这是一个解释副本集主要功能的文档。让我们根据 RAM 的差异来看看这些。

优点:

  • 更多的计算机意味着更好的数据冗余。拥有那个 2GB 的节点至少意味着您还有一份数据副本。
  • 在副本集上拥有完整的 3 个节点可以更轻松地删除一个进行维护

缺点:

  • 拥有不同大小的服务器并不适合自动故障转移。假设您的 5GB 服务器是主服务器。What happens when it goes down and the 2GB server wins the election? 您仍然有自动故障转移,但您的性能可能已大幅下降。
  • 读取缩放可能效果不佳。根据您的读取模式,将读取发送到 2GB 服务器可能会导致大量额外的磁盘命中和性能下降。

因此,这里的大问题实际上是性能之一。如果您只是为开发设置执行此操作,那么它基本上可以工作。但是在生产环境中,您冒着完全破坏您的应用程序的风险。如果您的应用程序习惯于使用 4GB+ 的 RAM,然后突然降到 2GB,它可能会变得无法使用。

大多数生产设置都希望故障转移到另一台“同等功率”的计算机上。

于 2011-05-13T23:19:54.113 回答