如何在不重新启动进程的情况下更改MongoDB集群中的主节点?

阅读MongoDB有关如何configuration集群的主从configuration文档(我们的集群将有超过12个节点,所以不幸的是我们不能有一个副本集configuration),我怎么能促进一个奴隶没有掌握不得不停止任何进程?

有没有我们可以使用的命令,比如Redis的slaveof命令,它可以让我们在不需要重启进程的情况下促使一个奴隶主宰呢?

这是我们在MongoDB文档中find的( http://docs.mongodb.org/manual/core/master-slave/ ):

要从不可用或损坏的主站(以下示例中的A)永久故障切换到从站(B):

closuresA.停止B上的mongod。备份并从dbpath中移动以B上的本地开头的所有数据文件。 警告删除本地。*是不可撤销的,不能撤消。 请谨慎执行此步骤。 使用–master选项重新启动m上的B。 注意这是一次性操作,不可逆。 A完成重新同步之前,不能成为B的奴隶。

这真的是唯一的方法吗?

系统pipe理员的补充答案在评论中清除你的问题:

不,目前(2.4版本)没有办法超过副本集中的12个节点。 您可以考虑使用Mongo连接器来作为一个可能的解决scheme。 连接器允许您从另一个集合中的一个集合重放操作,基本上是通过拖拽oplog(这是通常的复制工作方式)。 但是,这意味着解决群集之间的任何同步问题不会是自动的,并且基本上取决于您。

作为参考,投票/观看增加12个节点限制的相关问题是SERVER-3110 – 它目前预定为2.5.x(当前不稳定的开发分支),但是与所有这些事情一样,直到它被提交并且在稳定的版本,你无法确定何时会完成。

是的,这确实是切换angular色的方法。 Master / Slave为什么不赞成使用副本集是有原因的。 在主/从文档中,他们提供了一种使用副本集和两个节点来模拟主/从行为的方法。 如果你这样设置,你可以通过Mongo控制台的简单命令来获得模式的热插拔。

{ _id : 'replSet', members : [ { _id : 0, host : "mongomaster", priority : 0}, { _id : 1, host : "mongoslave", priority : 1 } ] } 

这将为您提供一个angular色交换。 您正在告诉副本集来交换哪些服务器充当主要服务器,哪些服务器充当主要服务器。