关于MongoDB的集群机制

之前学习的阿里云大学的《快速掌握 MongoDB 数据库》课程,对基本操作进行了比较详细的讲解,但是对MongoDB的底层原理、适用的核心场景、和部署时的集群架构等解释的并不详细。这里继续自己学习一下MongoDB的集群技术。

目录

MongoDB集群机制

1、主从复制

2、副本集

2.1、什么是副本集

2.2、什么是 Oplog

3.3、副本集的结构与原理​

3.4、副本集数据同步

3.5、何时触发选举

3.6、具体操作

3、分片

3.1、MongoDB分片介绍

3.2、集群中数据分布

3.3、数据区分


MongoDB集群机制

网上查阅了一些资料,大多数都说的很简单,这里尽量博彩众家之长吧。

MongoDB 有三种集群部署模式:分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。
1、Master-Slaver 是一种主从副本的模式,目前已经不推荐使用,MongoDB 3.6彻底废弃;
2、Replica Set 模式取代了 Master-Slaver 模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移,在实际生产中非常实用;
3、Sharding 模式适合处理大量数据,它将数据分开存储,不同服务器保存不同的数据,所有服务器数据的总和即为整个数据集。

Sharding 模式追求的是高性能,而且是三种集群中最复杂的。在实际生产环境中,通常将 Replica Set 和 Sharding 两种技术结合使用。

1、主从复制

虽然 MongoDB 官方建议用副本集替代主从复制,但是本节还是从主从复制入手,让大家了解 MongoDB 的复制机制。

主从复制是 MongoDB 中最简单的数据库同步备份的集群技术,其基本的设置方式是建立一个主节点(Primary)和一个或多个从节点(Secondary),如下图所示。

这种方式比单节点的可用性好很多,可用于备份、故障恢复、读扩展等。集群中的主从节点均运行 MongoDB 实例,完成数据的存储、查询与修改操作。
主从复制模式的集群中只能有一个主节点,主节点提供所有的增、删、查、改服务,从节点不提供任何服务,但是可以通过设置使从节点提供查询服务,这样可以减少主节点的压力。
另外,每个从节点要知道主节点的地址,主节点记录在其上的所有操作,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
在主从复制的集群中,当主节点出现故障时,只能人工介入,指定新的主节点,从节点不会自动升级为主节点。同时,在这段时间内,该集群架构只能处于只读状态。

2、副本集

这里简书上的AaronSimon讲的不错,记录一下。

2.1、什么是副本集

MongoDB 副本集是将数据同步在多个服务器的过程,复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性,同时还允许从硬件故障和服务中断中恢复数据。

2.2、什么是 Oplog

Oplog是MongoDB Primary(主节点)和Secondary(从节点)在副本集建立期间和建立完成之后的复制介质。Primary中所有的写入操作都会记录到Oplog中,然后从节点会来主节点拉取Oplog并应用到自己的节点上。这里的Oplog是MongoDB local数据库的一个集合,它是Capped collection,通俗意思就是它是固定大小,循环使用的。如下图:

Oplog中的内容如下:

{
    "ts" : Timestamp(1446011584, 2),
    "h" : NumberLong("1687359108795812092"),
    "v" : 2,
    "op" : "i",
    "ns" : "test.nosql",
    "o" : { "_id" : ObjectId("563062c0b085733f34ab4129"), "name" : "mongodb", "score" : "100" }
}

字段解释如下: 

  • ts: 操作时间,当前timestamp + 计数器,计数器每秒都被重置
  • h:操作的全局唯一标识
  • v:oplog版本信息
  • op:操作类型
    • i:插入操作
    • u:更新操作
    • d:删除操作
    • c:执行命令(如createDatabase,dropDatabase)
  • n:空操作,特殊用途
  • ns:操作针对的集合
  • o:操作内容,如果是更新操作
  • o2:操作查询条件,仅update操作包含该字段

3.3、副本集的结构与原理

如上图所示,副本集由一组mongo实例组成,提供了数据冗余与高可用性。相对于主从模式,该模式可以在主节点挂掉的时候通过选举算法自动选举出新的主节点,保证服务的可用性。
该模式由三个角色组成:

    <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值