MongoDb可以在副本集中使用多个主服务器节点吗?

时间:2014-04-17 17:45:54

标签: mongodb

当我停止其中一个辅助服务器时,副本集工作正常,因为另一个辅助节点具有副本数据。但是当我停止主节点全部崩溃时。

如何将两台服务器用作主服务器或更多服务器,它将如何与副本设置中的第二个节点一起使用?请帮我。谢谢! MongoDB

3 个答案:

答案 0 :(得分:1)

不,首先你只能有一个主要的mongodb服务器,Primary server is used for write operations所以它必须是一个。 Secondary servers are used for read only operations因此可以是任何。当其中一台主服务器或辅助服务器出现故障时,保留奇怪的服务器将有助于投票机制。

您可以通过赋予高优先级来强制成员成为主节点。 Force a Member to be Primary by Setting its Priority High

答案 1 :(得分:0)

复制的主要用途是进行故障转移。如果次要失败则不会发生重大变化。但如果主要失败,那么mongodb将执行选举以选择新的主要。您选择一个主要。它在总节点中需要半数票。因此,它没有一半的投票,那么所有节点Ll b仍然是次要的。然后我们可以读取数据..

我们只能有一个小学..

答案 2 :(得分:0)

MongoDB副本集是单个主群集,没有多个主要群集。你的图表(来自文档)很好地展示了这一点。

除此之外,您只能写入主数据库,换句话说,如果您的数据集没有主数据库,则无法写入主数据库,但是,您仍然可以阅读,只要将您的阅读首选项手动设置为:

  • PRIMARY_PREFERRED
  • SECONDARY_PREFERRED
  • SECONDARY
  

但是当我停止主节点全部崩溃时。

这一切都归结为故障转移处理,决定了您的写入处理(捕获群集中的异常并重试写入)和您的读取首选项。

主要选举可能需要10秒钟。看起来像崩溃的集合实际上并没有崩溃,它只是在等待一个新的主要。

现在这也归结为关于副本集如何工作的重要说明。如果您使用2个成员,那么您的设置将“崩溃”,这是因为MongoDB必须将大部分配置(在您的rs.status()中)设置为在线。

您可以在文档中找到更多详细信息:http://docs.mongodb.org/manual/core/replica-set-elections/

除非您正在处理网络分区,否则您不需要在线的“奇数”成员数量,副本集可以投票给具有偶数成员的主要成员,只要这些成员可以互相交谈。