2014-04-03 132 views
0

我想拥有mongod复制跨多个站点的冗余。MongoDB复制故障转移

我想部署以下的:部署5个的mongod实例(必须是奇数,或者需要一个仲裁人),现场有3站点A和2 B.

如果站点B下降,这是一切都很好,我们仍然有3在网站A上运行。但是如果网站A出现故障,那么我们只会运行2个Mongods。这个可以吗?哪一个将成为主人?他们可以自己管理它,直到我手动启动第三个吗?

第二个问题,在网站重新连接之后,mongo如何处理?

+0

答案在这里有很多描述:http://docs.mongodb.org/manual/core/replica-set-architecture-geographically-distributed/ –

回答

1

只有当超过50%的节点可用时,mongo副本集才可用。

在你的情况下,如果站点A失败那么你的副本集将下线

另一种可能是然后在外部位置运行在一个和2 B. 2个副本节点或者运行延迟仲裁员或复制品。

延迟副本将提供数据的进一步备份,但我会确保您将其优先级设置为0,这将确保虽然它是投票成员,但不会升级到主数据库。

拥有第三个网站可能不可行,但它是最安全的方法。

并发症显然附带确保您安全站点A之间的通信 - >站点C,站点B - >网站C.

如果你是真正限制至2个,那么唯一真正的办法确保副本集保持健康将监视健康并具有一定自动缩放功能的节点数量,以确保始终有足够的节点在主节点上进行投票。不过,我认为在这个解决方案中,当一个新的服务器启动并添加到副本集时,仍然会有一些停机时间。

+0

要清楚。副本集不会“脱机”,它将无法选择主要,因此无法写入。您仍然可以从读取首选项secondary/secondaryPreferred或设置rs.slaveOk()读取此集合 – daveh