mongodb 复制:未选择主数据库

Mad*_*ads 3 mongodb replica-set

我有三台安装了 mongod 的服务器作为复制集运行。突然,这两个辅助变得不可用(mongod 进程死亡) - 我认为是因为它们太陈旧了。

问题是原来的 PRIMARY 现在是 SECONDARY,我的应用程序无法工作,因为它无法连接到 PRIMARY。

我的意思是,这对我有什么帮助?如果副本集无法进行故障转移?!我错过了什么吗?

此外,我还问自己为什么 SECONDARIES 会死掉/为什么它们太陈旧了?我能做什么呢?

仅供参考:我的数据库相当大(磁盘上有 40GB)。

Ada*_*m C 5

您的主数据库现在不再是主数据库的原因是您必须拥有足够的选票才能在副本集中形成多数票 - 在您的情况下,这意味着最少 2/3。对于您的特定故障,这似乎没有意义,但可以想象一下,有问题的主数据库已与 2 个辅助数据库隔离(例如网络事件)。在这种情况下,您不希望有两个初选当选,因此它会下台,直到它可以看到其他成员。

为了让主设备恢复工作,您需要执行以下两项操作之一:

  1. 让其他成员备份
  2. 重新配置集合,以便形成多数(添加更多成员,转到单一成员)

有关重新配置选项的更多信息,请参阅此处:

http://www.mongodb.org/display/DOCS/Reconfiguring+a+replica+set+when+members+are+down

基本上,您的副本集将进行故障转移,但您必须有足够的成员才能实际进行选举。

至于次要死亡的原因,根据您在这里提供的信息,我不能说,但我可以告诉您,这并不是因为它们太陈旧了。落后太多的辅助设备将报告为已过时,但即使在该状态下也会继续运行(并投票给主要设备),直到您修复它并将其恢复为最新状态。请参阅此处了解如何修复过时的集合成员:

http://www.mongodb.org/display/DOCS/Resyncing+a+Very+Stale+Replica+Set+Member