【问题标题】:MongoDB Replication failoverMongoDB 复制故障转移
【发布时间】:2014-04-03 21:29:28
【问题描述】:

我想在多个站点之间进行 mongod 复制以实现冗余。

我正在考虑部署以下内容:部署 5 个 Mongod 实例(必须是奇数,否则需要仲裁员),站点 A 有 3 个,站点 B 有 2 个。

如果站点 B 出现故障,那很好,我们仍然在站点 A 上运行 3 个。但是如果站点 A 出现故障,那么我们将只有 2 个 Mongods 在运行。这个可以吗?哪一个会成为大师?在我手动启动第三个之前,他们可以自己管理吗?

第二个问题,网站重连后mongo会如何处理?

【问题讨论】:

标签: mongodb replication database-replication redundancy


【解决方案1】:

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

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

一种可能的替代方法是在 A 中运行 2 个副本节点,在 B 中运行 2 个副本节点。然后在外部位置运行仲裁器或延迟副本。

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

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

确保您保护站点 A -> 站点 C、站点 B -> 站点 C 之间的通信安全显然会带来复杂性。

如果您真的被限制为 2 个站点,那么确保副本集保持健康的唯一真正方法是监控健康的节点数量并具有一些自动缩放功能以确保您始终有足够的节点对初选投票。但是,我认为在此解决方案中,当启动新服务器并将其添加到副本集中时,您仍然会遇到一些停机时间。

【讨论】:

  • 要清楚。副本集不会“脱机”,它将无法选择主节点,因此无法写入。您仍然可以使用读取首选项 secondary/secondaryPreferred 或设置 rs.slaveOk() 从该集合中读取
猜你喜欢
  • 1970-01-01
  • 2020-03-14
  • 2013-01-24
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多