【发布时间】:2017-04-17 18:47:34
【问题描述】:
i have created 3 mongod , 2 mongos and a single config server.
While i look in to sh.printShardingStatus().
it says some node as primary one.
mongoDb 如何选择它的主分片来保存非分片集合,我可以更改主分片吗?
【问题讨论】:
标签: mongodb
i have created 3 mongod , 2 mongos and a single config server.
While i look in to sh.printShardingStatus().
it says some node as primary one.
mongoDb 如何选择它的主分片来保存非分片集合,我可以更改主分片吗?
【问题讨论】:
标签: mongodb
新集群中的主分片始终是第一个分片。见manual
【讨论】:
您可以使用 movePrimary 命令。详细信息在这里。它要求您在运行此命令之前排空其他分片。
http://docs.mongodb.org/manual/reference/command/movePrimary/
【讨论】:
根据the manual,“[在集群部署后] 创建的数据库可能驻留在集群中的任何分片上。”当您在分片集群中创建数据库时,它将被分配一个主数据库,但它选择该主数据库的机制没有记录。我邀请其他人深入了解the source 以追踪并记录所使用的实际机制。
在商业支持工单中,MongoDB 已确认将在“最可用”分片上为新数据库分配一个主数据库,其中最可用意味着其上数据量最少的分片。
【讨论】:
主分片
分片集群中的每个数据库都有一个主分片,用于保存该数据库的所有非分片集合。每个数据库都有自己的主分片。主分片与副本集中的主分片没有关系。
mongos 在创建新数据库时通过选择集群中数据量最少的分片来选择主分片。 mongos 使用 listDatabase 命令返回的 totalSize 字段作为选择标准的一部分。