我有三台安装了 mongod 的服务器作为复制集运行。突然间,这两个次级变得不可用(mongod 进程死亡)——我想是因为它们太陈旧了。
问题是原来的 PRIMARY 现在是 SECONDARY,我的应用程序无法运行,因为它无法连接到 PRIMARY。
我的意思是,这对我有什么帮助?如果副本集无法进行故障转移?!我错过了什么吗?
此外,我问自己为什么 SECONDARIES 死了/为什么它们太陈旧了?我该怎么办?
仅供参考:我的数据库很大(磁盘上有 40GB)。
我有三台安装了 mongod 的服务器作为复制集运行。突然间,这两个次级变得不可用(mongod 进程死亡)——我想是因为它们太陈旧了。
问题是原来的 PRIMARY 现在是 SECONDARY,我的应用程序无法运行,因为它无法连接到 PRIMARY。
我的意思是,这对我有什么帮助?如果副本集无法进行故障转移?!我错过了什么吗?
此外,我问自己为什么 SECONDARIES 死了/为什么它们太陈旧了?我该怎么办?
仅供参考:我的数据库很大(磁盘上有 40GB)。
您的主节点现在不再是主节点的原因是因为您必须有足够的选票才能在副本集中形成多数票——在您的情况下,这意味着最少 2/3。由于您的特定故障似乎没有意义,而是想象一下,有问题的主要问题反而与 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