首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两台服务器上运行mongoDB replication+sharding是否合理?

在两台服务器上运行mongoDB replication+sharding是否合理?
EN

Stack Overflow用户
提问于 2010-09-08 00:18:40
回答 4查看 3.6K关注 0票数 8

考虑以下设置:

有两个物理服务器,它们被设置为一个常规的mongodb复制集(包括一个仲裁器进程,因此自动故障转移将正常工作)。

现在,据我所知,大多数实际工作将在主服务器上完成,而从服务器将主要只做保持其数据集同步的工作。

将分片引入到此设置中是否合理,即在相同的两台服务器上设置另一个复制集,以便每个服务器都有一个作为主进程运行的一神型进程和一个作为辅助进程运行的进程。

预期的结果是,当两台服务器都启动时,两台服务器将分担实际查询/插入的工作负载。在其中一台服务器出现故障的情况下,整个设置应该优雅地进行故障转移以继续运行,直到另一台服务器恢复。

除了设置中的总体开销和进程数量(mongos/configservers/仲裁器)之外,这种设置是否有任何缺点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-08 03:40:14

这肯定能行得通。我之前在#mongodb IRC频道上问过一个问题,那就是在一台机器上运行多个mongod进程是不是一个坏主意。答案是“只要你有RAM/CPU/带宽,就疯狂吧”。

值得注意的是,如果你正在寻找高性能的读取,并且不介意写得慢一点,你可以:

  • 在“安全模式”下进行写操作,在这种模式下,写操作只有在传播到N个服务器后才会返回(在本例中,N是副本集中的服务器数,因此所有服务器都是)。
  • 在连接代码中设置驱动程序适当的标志,以允许从从机读取。

这将得到一个类似于MySQL的集群设置--在主服务器上只写一次,但是任何从服务器都有资格进行读取。在读取比写入多得多的情况下(比方说,一个数量级),这可能是更高的性能,但我不知道当一个节点关闭时它会如何表现(因为写入可能会停止尝试写入3个节点,但只有2个节点启动,等等-这将需要测试)。

票数 10
EN

Stack Overflow用户

发布于 2013-03-14 12:35:06

需要注意的一件事是,当两台机器都启动时,您的查询将在它们之间拆分。当一台机器宕机时,所有的查询都将转到剩余的机器上,从而使对它的需求加倍。您必须确保您的机器能够承受突然加倍的查询。

票数 1
EN

Stack Overflow用户

发布于 2010-09-10 05:28:52

您缺少一个关键的细节:如果您有一个只有两个物理节点的分片设置,如果其中一个节点失效,您的所有数据都将丢失。这是因为在分片层下面没有任何冗余(推荐的方式是每个分片由一个副本集组成)。

但是,您所说的关于副本集的内容是正确的:您可以在两个无共享的节点上运行它,并且有一个额外的仲裁器。但是,建议的设置是3个节点:一个主节点和两个辅助节点。

http://www.markus-gattol.name/ws/mongodb.html#do_i_need_an_arbiter

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3660514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档