mongodb复制:没有主选

我有三台安装了mongod的服务器作为复制集运行。 突然之间,两个传说变得不可能(蒙哥德进程死亡) – 我认为,因为他们太陈旧了。

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

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

Furhtermore我在问自己,为什么SECONDARIES死/为什么他们太陈旧? 我能做些什么呢?

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

你现在的小学不再是主要的原因是你必须有足够的票数才能在一个副本中形成多数 – 在你的情况下,这意味着2/3以上。 由于你的具体失败似乎没有道理,但是想象一下,主要问题已经与二个二元组(例如一个networking事件)分离开来了。 在这种情况下,你不会希望选出两个初选,所以它会下台,直到看到其他成员。

为了让主要的工作恢复正常,你需要做以下两件事之一:

  1. 让其他成员备份
  2. 重新configuration集合,使大多数可以形成(添加更多的成员,去一个单一的)

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

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