MongoDB - 在副本集上切换服务器

时间:2014-12-16 15:59:52

标签: mongodb

我已经设置了2台运行MongoDB(O.S.Windows)的计算机,并且我已经设置了复制。我想知道是否有可能以“主要”的形式杀死正在运行的进程,以检查次要是否会变为主要

有可能吗?怎么样?我刚刚杀死了主要进程,并且在我的mongo客户端(连接到主要进程)上,它没有转向辅助服务器。

提前感谢。

3 个答案:

答案 0 :(得分:1)

您需要将第三台服务器设置为仲裁者。

仲裁者是确定哪个其他服务器将是主要服务器的人。

通常,建议每个副本集具有奇数个服务器(miniumun将是1个主服务器,1个辅助服务器,1个仲裁服务器)

这可能会对你有帮助。

http://docs.mongodb.org/manual/tutorial/add-replica-set-arbiter/

仲裁者可以在一个非常小的服务器上,因为它不存储数据,它唯一的功能是决定。

答案 1 :(得分:1)

您应该至少有3个成员配置。

Replica documentation

设置正确的副本,将您的mongoshell连接到主实例并将其关闭(Shutdown),将您的mongoshell与辅助设备连接并检查副本集的状态(RS Status)。

这就是全部!

答案 2 :(得分:0)

最简单的方法是关闭您的主服务器(假设 primarydb 是您的主服务器,而 secondaryDB 是您的主服务器。此过程如下所示

  1. 连接到您的主要和次要。
  2. 停止主要。
  3. 如果选出新的小学,请查看您的辅助课程。
  4. 连接到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()
    

    在上一次操作的结果中,您将看到哪个服务器现在是新的主服务器(请注意键)。

    正如评论中所提到的,你应该至少有三台服务器(一个主服务器,两个辅助服务器)来使选举过程正常运行。