在主服务器和大多数服务器都关闭的情况下,无论如何都要重新配置副本集。例如,如果数据中心1运行,可以运行一个程序来重新配置并为剩余的服务器设置一个新的主服务器吗?
我一直得到这个“命令'$ eval'失败:不掌握(回复:{”注意:“来自execCommand”,“ok”:0.0,“errmsg”:“不是主人”})“
我们只有2个数据中心。 (如果我们有3,那么我意识到这将解决这个问题。) 我正在考虑每次发生故障转移时在5个成员副本集上运行重新配置,并将仲裁器的主机从一个数据中心更改为另一个数据中心,以便活动数据中心始终拥有仲裁器,但我做不到如果副本集的5个成员中有3个不可用...因为不会设置新的主要成员。
作为旁注,我正在尝试使用mongo .NET驱动程序的MongoDatabase.Eval()方法在.NET Web服务中执行此操作,但即使我传入一个简单的javascript方法,我也会得到一个异常说它失败了,因为它不是主人。除了eval之外我还能使用另一种方法吗?它不需要在主服务器上执行吗?
我是一个相当新的mongo所以,如果你有任何建议,我全都耳朵!
答案 0 :(得分:0)
您可以在服务器上使用rs.reconfig。
http://docs.mongodb.org/manual/reference/method/rs.reconfig/
如果大部分服务器都关闭,那么您必须在重新配置期间指定force选项。
rs.reconfig(cfg,{force:true});
cfg是你的新配置,其中包含你当前的主持人。
注意:这必须从mongo shell执行。