我正在尝试浏览mongodb分片的文档,我对主分片的分配方式以及主分片的含义感到有些困惑
根据文件显示
每个数据库都有一个主分片,其中包含所有未分片的分片 数据库的集合。主分片与the。无关 副本集中的主要内容。
这是否意味着主分片是首次创建数据库的分片中的分片(或服务器集合)?
说我有3个分片s0,s1和s2。在每个分片中我有3个服务器
s0 - 服务器3(辅助)
s1 - 服务器4(主要)
s1 - 服务器6(辅助)
s2 - 服务器7(主要)
现在我通过mongoclient和mongos创建一个新的数据库。现在说请求转到分片1(s1)。由于create database是一个写操作,它将转到shard 1中的服务器4,因此s1成为主分片?
另一方面,如果请求已经遍历到s2 shard,那么服务器7将是主要的创建集合,然后s2将是我的主要分片?
这种理解是正确的还是我在某些地方出错?
答案 0 :(得分:3)
是的,你是对的!你明白了这个概念。
只要您不对单个集合进行分片,集合必须在其中一个副本集中具有主要位置。因此,将这些单独的碎片视为单独的RS。 因此,一个数据库位于一个分片中,如果你在数据库中分享集合,那么集合就是"平衡"到多个分片。通过TAG,您可以决定该集合的传播位置。正常情况会将其均匀分布到所有分片。
您可以随时决定什么是DB的主要位置。创建之后,你可以'#34;移动"它,当DB仍为空或非常小时,它的运行速度很快。 movePrimary