分片集群
1.1、概念
分片集群是将数据存储在多台机器上的操作,主要由查询路由mongos、分片、配置服务器组成。
●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据,只是缓存在内存中。
●分片用来存储数据块。数据集根据分片键将集合分割为数据块,存储在不同的分片上。在生产环境下,通常一个分片由一个复制集组成。
●配置服务器存储集群的元数据,包括数据与分片的映射关系,配置服务器一旦挂掉,集群将无法工作。
注意:
●当mongos重启时,会从配置服务器读取元数据更新自己缓存的元数据
●当分割数据时或者在分片间移动数据时会写配置服务器。
●在分片集群中,配置服务器可以采用复制集的架构,但复制集中不允许有仲裁节点和延时节点,且buildindexes必须设为true。
●集合的数据分布在多个分片上,如果某个分片失效,查询会返回错误,可以通过为查询指定partial选项,允许接受不完整的数据
作用
单台机器无法满足存储需求,内存、磁盘空间不够,读写吞吐量不够。
1.2、如何维护数据均衡分布
集群使用分割器和平衡器两个后台进程维护数据均匀分布。
分割器
●分割器的作用是防止数据块变大,数据块大小默认是64MB,当超过64MB时,分割器会将其一分为二。
●分割的对象不是实际的数据,而是元数据,只是在逻辑上进行逻辑块的划分,不会影响到实际数据的分布
●数据块太小会产生大量块,容易使集群不平衡,导致数据块频繁移动,降低集群性能,元数据增加,降低查询效率
●数据块太大,会减小移动频率,元数据少,有利于数据查询,但一旦移动,会花费很长时间
●并不是所有的集合都会分片,没有被分片的集合都存储在同一个主分片上
●只有对
MongoDB分片集群与复制集
最新推荐文章于 2024-07-29 12:57:52 发布
本文详细介绍了MongoDB的分片集群和复制集。分片集群用于解决存储和性能问题,由mongos、分片和配置服务器组成,其中配置服务器存储元数据并维护数据均衡分布。数据块根据分片键逻辑上分割,通过分割器和平衡器确保数据分布。复制集提供数据冗余和自动容灾,主节点通过oplog同步数据到从节点。复制集支持不同的读写策略,但消耗更多资源且无法解决负载均衡。
摘要由CSDN通过智能技术生成