mongodb中的主碎片

mongodb中的主碎片,mongodb,sharding,Mongodb,Sharding,我正在浏览mongodb分片的文档,我对主分片是如何分配的以及主分片的含义感到有点困惑 根据它统计的文件 每个数据库都有一个主分片,其中包含所有未分片的数据 数据库的集合。主碎片与主碎片无关 副本集中的主副本 这是否意味着主分片就是第一次创建数据库的分片中的分片(或服务器集合) 假设我有3个碎片s0、s1和s2。在每个碎片中,我有3台服务器 s0服务器1(主) s0服务器2(辅助) s0-服务器3(辅助) s1-服务器4(主) s1-服务器5(辅助) s1-服务器6(辅助) s2-服务器7(主

我正在浏览mongodb分片的文档,我对主分片是如何分配的以及主分片的含义感到有点困惑

根据它统计的文件

每个数据库都有一个主分片,其中包含所有未分片的数据 数据库的集合。主碎片与主碎片无关 副本集中的主副本

这是否意味着主分片就是第一次创建数据库的分片中的分片(或服务器集合)

假设我有3个碎片s0、s1和s2。在每个碎片中,我有3台服务器

  • s0服务器1(主)
  • s0服务器2(辅助)
  • s0-服务器3(辅助)

  • s1-服务器4(主)

  • s1-服务器5(辅助)
  • s1-服务器6(辅助)

  • s2-服务器7(主)

  • s2-服务器8(辅助)
  • s2-服务器9(辅助)
现在,当我通过mongoclient和mongos创建新数据库时。现在假设该请求转到碎片1(s1)。由于create database是一个写操作,它将转到shard 1中的服务器4,因此s1由主shard变为

另一方面,如果请求将遍历到s2碎片,那么服务器7将是主要的,将创建集合,然后s2将是我的主要碎片


这种理解是正确的,还是我在某些地方出错了?

是的,你是对的!你理解这个概念

只要不切分单个集合,集合就必须在其中一个副本集中具有主位置。所以,把这些碎片看作是单独的RS。 所以,一个DB位于一个碎片上,如果您在DB内创建碎片集合,则该集合与多个碎片“平衡”。通过标签,您可以决定该集合的分布位置。正常情况是将其均匀分布到所有碎片上

您可以随时决定DB的主要位置。创建之后,您可以“移动”它,当DB仍然为空或非常小时,它的操作非常快