首页 > 代码库 > Mongodb副本集和分片的概念
Mongodb副本集和分片的概念
副本集(Replica Set):
通俗的说,副本集就是集群,主从复制,读写分离,故障切换。
副本集是Mongodb原来的主从模式的升级版本,官方已经不再推荐使用主从模式。
MongoDB的副本集与主从有所不同,主从在主机宕机后所有服务将停止,而副本集在主机宕机后,副本会接管主节点成为主节点,不会出现宕机的情况。
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
MongoDB复制结构图如下所示:
Ps:这张图中读写都是从主节点,其实可以设置读操作走从节点,但是写入操作只能是在主节点上。
副本集特征:
- N 个节点的集群
- 任何节点可作为主节点
- 所有写入操作都在主节点上
- 自动故障转移
- 自动恢复
分片(Sharding)
在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。
分片是将数据拆分后分发到各个节点上,所以它的各个节点上的数据是不一样的,这是跟副本集最大的差别。
分片好处之一是将数据拆分到不同节点,这样可以减少写的压力。
当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
下图展示了在MongoDB中使用分片集群结构分布:
上图中主要有如下所述三个主要组件:
- Shard:
用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障
- Config Server:
mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
- Query Routers:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
对于副本集和分片 暂时只了解概念和原理即可 不深入学习。
Mongodb副本集和分片的概念