MongoDB分片>集群组件>分片

2/13/2017来源:SQL技巧人气:415

主分片 分片状态 分片集群的安全

一个分片包含分片集群中分片数据的一部分。同时,集群中的所有分片拥有整个集群的全部的数据。

分片应该被部署为复制集模式,以提供数据冗余和高可用性。

用户,客户端,或者应用程序只有在执行本地管理或者维护操作时才能直连分片(否则应该连接到mongos路由服务)。

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

重要 MongoDB不保证任意两个连续的数据块存在于同一个分片中。

主分片

一个分片集群中的每个数据库都有一个主分片,数据库中的所有非分片集合存储在主分片中。主分片和复制集中的主节点是不同的概念。

当创建一个新的数据库时,mongos会选择集群中数据最少的分片作为数据库的主分片。Mongos使用listDatabase 命令返回的totalSize 字段作为选择条件的一部分。

这里写图片描述

如果要改变数据库的主分片,使用movePRimary命令。主分片的迁移过程可能花费大量时间,并且你将不能访问数据库中的集合直到该过程完成。取决于迁移数据量的大小,迁移过程可能影响所有的集群操作。因此,在试图修改主分片之前,需要考虑对集群操作和网络负载的影响。

当前使用此前被部署为复制集模式的分片来构建一个分片集群时,所有已经存在的数据会继续存在它们原来的复制集(分片)中。之后创建的数据库可能会存储在集群中的任意分片。

分片状态

在mongo命令行使用sh.status()方法可以查看集群的概况。报告信息包含了每个数据库的主分片以及数据块的分布情况。查看sh.status()方法获取更多详情。

分片集群的安全

使用内部认证(Internal Authentication)来保证内联网集群的安全并阻止未经授权的集群组件访问集群。为了实施内部认证,你必须以恰当的安全设置启动集群中的每个MongoDB 主程序(mongod )。

查看Deploy Sharded Cluster with Keyfile access Control 获取部署一个安全的分片集群的指南。

分片本地用户

每个分片都支持基于角色的访问控制(RBAC) 来限制对分片数据未经授权的访问和操作。启动复制集中的每个mongod 主程序时,通过携带–auth 选项来实施RBAC。或者,使用内部认证(Internal Authentication)来保证内联网集群的安全,也可以基于RBAC实现对用户的访问控制。

每个分片拥有它自己的分片本地用户。这些用户不能在其它分片上使用,也不能用于通过mongos连接分片集群。

查看Enable Auth获取关于添加用户到一个启用了RBAC的MongoDB部署的指南。