MongoDB副本集中的每个服务器是否需要具有完全相同的RAM?

时间:2011-05-12 22:40:09

标签: memory mongodb ram

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

  • server1:5gb
  • server2:2gb
  • server3:4gb

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

2 个答案:

答案 0 :(得分:5)

不,你不需要相同的RAM。 (是的,您可以按照描述设置副本集。)

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

如果可以,MongoDB最终会将整个数据库带入内存。如果您使用两个副本进行读取而另一个用于写入,则可能需要使用5gb和4gb计算机进行读取,因此它们更有可能触及RAM。

答案 1 :(得分:3)

是的,您可以这样配置副本集。

  

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

Here's a doc解释副本集的主要功能。让我们根据RAM差异来看看这些。

<强>优点:

  • 更多计算机意味着更好的数据冗余。拥有该2GB节点至少意味着您还有一个数据副本。
  • 在副本集上拥有完整的3个节点可以更轻松地将其中一个用于维护

<强>缺点:

  • 使用不同大小的服务器不适合自动故障转移。假设您的5GB服务器是主要服务器。当它下降并且2GB服务器赢得大选时会发生什么?您仍然可以自动进行故障转移,但您的性能可能会急剧下降。
  • 读取缩放可能效果不佳。根据您的读取模式,向2GB服务器发送读取可能会导致大量额外的磁盘命中并降低性能。

所以,这里的大问题,实际上是表现之一。如果您只是为开发设置执行此操作,那么它基本上可以正常工作。但在生产环境中,您可能会面临完全陷入困境的风险。如果您的应用程序习惯于使用4GB + RAM,然后突然降至2GB,则可能无法使用。

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