MongDB翻译:碎片

原文

集群里的单个碎片保存了总数据的一个子集,集群里的所有碎片所持有的子集就是总数据。

在MongDB3.6版本里,为了冗余性和高可靠性,单个碎片必须是一个副本集。

用户,客户端,应用应该直接连接到碎片执行维护操作。

在单个碎片里执行查询只会返回一部分数据。连接到mongos来执行集群级别的操作,包括读写操作。

重要:MongDB不保证单个碎片存在两个连续的块。

主碎片

每个在集群里的数据库都有一个 primary shard持有该数据库没碎片化的集合。每个数据库都有自己的primary shard。primary shard 跟副本集的 primary没有任何联系。

当通过持有数据量最少的碎片创建数据库的时候,mongos会使用primary shard。mongos使用listDatabase命令返回的totalSize字段来作为一部分的选择标准。
[图片上传失败...(image-257913-1520013137947)]

使用 movePrimary命令来改变数据库的primary shard。完成迁移primary shard需要消耗大量时间,并且在迁移完成前你不应该访问数据库的集合。根据被迁移的数据量,迁移可能会对集群里的整体操作造成影响。在尝试更改primary shard前,应该从分考虑到网络畅通性和对集群操作的影响。

以前是一个副本集,现在你的碎片建立在该副本集之上且把该碎片加入到集群里的时候,所有已经存在的数据库继续运行在当前的副本集里。以后创建的数据库可能会存在于集群里的其他任何碎片中。

碎片状态

在mongo shell运行sh.status()方法可以查看当前集群的大概情况。其中包括了哪个碎片是当前数据库的primary shard,还可以看到碎片里的chunk描述。

集群安全性

使用 Internal Authentication来确保内部集群的安全性和避免无效用户访问集群。为了集群的内部身份验证,您必须在集群中使用适当的安全设置启动每个mongod。

碎片的本地用户

每个碎片都支持s Role-Based Access Control (RBAC) 来限制未认证的用户访问和操作碎片。启动每个mongod实例的时候指定 --auth选项来强制开启RBAC。另外,未用户开启 Internal Authentication同时也会开启RBAC。

每个碎片都有自己的本地用户。这些用户不能用于其他碎片上,也不能用来连接mongos.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容