阅读 MongoDB 的文档,了解如何配置集群的主从配置(我们的集群将有超过 12 个节点,因此不幸的是我们不能有副本集配置),如何在不停止任何进程的情况下将从属服务器提升为主服务器?
有没有什么命令我们可以使用,比如 Redis 的 slaveof 命令,它允许我们将从属服务器提升为主服务器,而无需重新启动该进程?
这是我们在 MongoDB 文档中发现的(http://docs.mongodb.org/manual/core/master-slave/):
要从不可用或损坏的主服务器(以下示例中的 A)永久故障转移到从服务器(B):
关闭 A。停止 B 上的 mongod。备份并从 dbpath 中移动 B 上所有以 local 开头的数据文件。警告删除 local.* 是不可撤销的,无法撤消。执行此步骤时要极其谨慎。使用 --master 选项重新启动 B 上的 mongod。注意这是一次性操作,不可逆。在完成完全重新同步之前,A 不能成为 B 的从属。
这真是唯一的办法吗?
答案1
答案2
是的,这确实是切换角色的方法。主/从模式被弃用,而采用副本集是有原因的。在主从文档中他们提供了一种使用副本集和两个节点模拟主/从行为的方法。如果您以这种方式进行设置,则可以通过 Mongo 控制台中的简单命令获得模式的热插拔。
{ _id : 'replSet', members : [ { _id : 0, host : "mongomaster", priority : 0},
{ _id : 1, host : "mongoslave", priority : 1 } ]
}
这将为您提供角色交换。您告诉副本集交换哪些服务器充当主服务器,哪些服务器充当辅助服务器。