0

我们有 3 个分片,每个分片复制超过 3 个盒子(总共 9 个盒子)。2 个副本位于我们的主要托管服务提供商(站点 A),我们在另一个托管服务提供商(站点 B)有第三个副本(仅设置为辅助)。如果站点 A 失败,(如何)我们可以自动接受站点 B 的请求?

我们已按照http://docs.mongodb.org/manual/core/replication/中的建议将站点 B 的副本配置为仅辅助副本我知道您可以在这些框上执行 rs.SlaveOk() 并接受请求,但这只会做本地分片,占数据库的三分之一。

所有帮助表示赞赏!

4

1 回答 1

1

当大部分副本集不可用时,您无法自动进行故障转移。

丢失站点 A 意味着您丢失了 2/3 的副本节点。为了让站点 B 节点接受读取和写入,您必须重新配置副本集。您可以从配置中删除站点 A 上的节点,也可以添加仲裁器以恢复“多数”。

请注意,您不会以这种方式运行任何冗余,因此我建议您不要尝试自动或尽快启动,以防服务器出现重大损失,您需要花时间启动新的服务器来提供新配置的冗余。

如果您的应用程序需要在丢失数据中心时幸存下来,建议的配置是在 DC1 和 DC2 中拥有相同数量的节点,然后在第三个位置使用仲裁器(这样无论哪个数据中心出现故障,您都可以确保大多数副本集仍然存在并且可以选择新的主节点)。

于 2013-03-20T04:02:48.273 回答