我已经设置了2台运行MongoDB(O.S.Windows)的计算机,并且我已经设置了复制。我想知道是否有可能以“主要”的形式杀死正在运行的进程,以检查次要是否会变为主要。
有可能吗?怎么样?我刚刚杀死了主要进程,并且在我的mongo客户端(连接到主要进程)上,它没有转向辅助服务器。
提前感谢。
答案 0 :(得分:1)
您需要将第三台服务器设置为仲裁者。
仲裁者是确定哪个其他服务器将是主要服务器的人。
通常,建议每个副本集具有奇数个服务器(miniumun将是1个主服务器,1个辅助服务器,1个仲裁服务器)
这可能会对你有帮助。
http://docs.mongodb.org/manual/tutorial/add-replica-set-arbiter/
仲裁者可以在一个非常小的服务器上,因为它不存储数据,它唯一的功能是决定。
答案 1 :(得分:1)
您应该至少有3个成员配置。
设置正确的副本,将您的mongoshell连接到主实例并将其关闭(Shutdown),将您的mongoshell与辅助设备连接并检查副本集的状态(RS Status)。
这就是全部!
答案 2 :(得分:0)
最简单的方法是关闭您的主服务器(假设 primarydb 是您的主服务器,而 secondaryDB 是您的主服务器。此过程如下所示
连接到shell中的主要
conn1 = new Mongo("localhost:31000")
primaryDB = conn1.getDB("test")
连接到您的辅助人员
conn2 = new Mongo("localhost:31001")
secondaryDB = conn2.getDB("test")
...
关闭您的主要
primaryDB.adminCommand({"shutdown" : 1})
检查其中一个辅助人员是否被选为主要
secondaryDB.isMaster()
在上一次操作的结果中,您将看到哪个服务器现在是新的主服务器(请注意主键)。
正如评论中所提到的,你应该至少有三台服务器(一个主服务器,两个辅助服务器)来使选举过程正常运行。