我有 6 个虚拟机(Master、3 个 configsvr 和两个分片);我想将副本集添加到我的分片中。
是否可以将一个分片设置为另一个分片的复制,反之亦然?或者我应该添加其他虚拟机作为分片的副本吗?
我有 6 个虚拟机(Master、3 个 configsvr 和两个分片);我想将副本集添加到我的分片中。
是否可以将一个分片设置为另一个分片的复制,反之亦然?或者我应该添加其他虚拟机作为分片的副本吗?
简而言之:您应该为新的副本集节点添加新的虚拟机,并且您需要小心配置分片集群。
要回答您的第一个问题:
在单个主机上运行两个 mongod 实例(作为不同副本集的两个节点)会给您带来困难,例如 RAM 使用情况,因此您应该避免这种情况。相反,每个副本集节点应该位于不同的主机(不同的 VM)上。
并扩展分片集群配置的问题:
目前,集群配置将每个分片注册为独立实例,例如
{ "_id" : "shard0000", "host" : "vms2:30000" }
将独立实例转换为副本集后,需要更新分片集群配置以匹配:
连接到分片集群的 mongos 实例之一并发出以下形式的命令:
db.getSiblingDB("config").shards.save(
{_id: "«name»", host: "«replica-set»/«member,»«member,»«...»" }
)
替换
«name»
为分片的名称。替换«replica-set»
为副本集的名称。替换«member,»«member,»«...»
为副本集的成员列表。重新启动所有 mongos 实例。如果可能,重新启动副本集的所有组件(即所有 mongos 和所有 shard mongod 实例)。