mongodb中的主要碎片

时间:2016-08-09 00:50:13

标签: mongodb sharding

我正在尝试浏览mongodb分片的文档,我对主分片的分配方式以及主分片的含义感到有些困惑

根据文件显示

  

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

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

说我有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成为主分片?

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

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

1 个答案:

答案 0 :(得分:3)

是的,你是对的!你明白了这个概念。

只要您不对单个集合进行分片,集合必须在其中一个副本集中具有主要位置。因此,将这些单独的碎片视为单独的RS。 因此,一个数据库位于一个分片中,如果你在数据库中分享集合,那么集合就是"平衡"到多个分片。通过TAG,您可以决定该集合的传播位置。正常情况会将其均匀分布到所有分片。

您可以随时决定什么是DB的主要位置。创建之后,你可以'#34;移动"它,当DB仍为空或非常小时,它的运行速度很快。 movePrimary