繁体   English   中英

ReplicaSet中的MongoDB多个主服务器

[英]MongoDB Multiple Masters in ReplicaSet

我有一个关于MongoDB副本集中多个主人的问题。 我有以下布局:

服务器A - >使用MongoDB和几个应用程序

服务器B - >使用MongoDB和几个应用程序

MongoDB的两个实例都组织在同一副本集中(服务器A作为主服务器,服务器B作为辅助服务器)。 但现在有问题了。 两个数据库都应包含服务器上应用程序的数据。

是否可以部署具有两个主服务器的副本集,以便服务器A的数据在服务器B的MongoDB中可用,反之亦然?

非常感谢你提前

MongoDB中的副本集此时只能有一个主服务器。 (它被称为副本集的主要副本。)对于您的方案,解决方案通常是使用分片群集。 在您的示例中,您将有两个分片:一个用于服务器A的数据,另一个用于服务器B的数据。两个分片都实现为副本集,因此每个分片至少有三个服务器。 然后,您可以将A分片的主分区放在同一数据中心A中,并将B分片的主分区放在数据中心B中。每个分片的至少一个副本(称为辅助分片)将位于另一个数据中心。

这意味着每个数据中心都可以使用所有数据,但是写入A分片总是需要在数据中心A中进行,并写入数据中心B中的B分片。(尽管写入也可以远程完成,所以你可以从数据中心B写入分片A,这只是在这种情况下它是远程写入。)

没有MongoDB只是单一主人。

在保持同步的同时创建这样的两个单独副本的唯一方法是手动执行但不建议这样做。

“MongoDB的两个实例都组织在同一个副本集中”

“是否可以部署具有两个主服务器的副本集,以便服务器A的数据在服务器B的MongoDB中可用,反之亦然?”

奇怪的是,复制确实是为了达到这个目的:在不同的服务器上冗余地存储相同的数据。

如果您已将其设置到位,那么您已经实现了目标。 Sharding几乎没有(如果不是没有)与高可用性有关。

如果您具有自动故障转移功能,则不需要多主机配置。 为此,请确保您至少有3个数据承载副本成员或2 + 1个仲裁器,以便它们能够占多数并选择新的主服务器以防旧服务器脱机。

您可能要调整electionTimeoutMillis参数autofailover检查,以更频繁地发生。

将重要数据写入数据库时​​,可以使用{w:“majority”}写入问题来确保您的更改已反映在大多数数据承载服务器上,因此是持久的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM