MongoDB分片集群与复制集

本文详细介绍了MongoDB的分片集群和复制集。分片集群用于解决存储和性能问题,由mongos、分片和配置服务器组成,其中配置服务器存储元数据并维护数据均衡分布。数据块根据分片键逻辑上分割,通过分割器和平衡器确保数据分布。复制集提供数据冗余和自动容灾,主节点通过oplog同步数据到从节点。复制集支持不同的读写策略,但消耗更多资源且无法解决负载均衡。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值