MongoDB实战-复制(副本集的复制原理)

本文深入探讨MongoDB复制的基础原理,重点关注oplog和心跳检测。oplog是复制的关键,记录所有数据变更,从节点通过长轮询应用oplog条目保持数据同步。心跳检测用于监控副本集成员的健康状况,触发故障转移。了解这些机制有助于理解副本集在故障情况下的行为。
摘要由CSDN通过智能技术生成

    学习了如何创建副本集,如何使用副本集,认知了其故障转移策略。我们还需从复制的基础原理了解副本集的工作方式。副本集主要依赖于两个基础机制:oplog和“心跳“。oplog让数据的复制成为可能,而“心跳”则监控健康情况并触发故障转移,后续将看到这些机制时如何运作的。你应该已经逐渐开始理解并能预测副本集的行为了,尤其在故障发生的情况下。

1.关于oplog

    oplog是MongoDB复制的关键。oplog是一个固定集合,位于每个复制节点的local数据库里,记录了所有对数据的变更。每次客户端向主节点写入数据,就会自动向主节点的oplog里添加一个条目,其中包含了足够的信息来再现数据。一旦写操作被复制到某个从节点上,从节点的oplog,从节点的oplog中也会有一条关于写入的数据。每个oplog条目都是由一个BSON时间戳进行标识的,所有的从节点都使用这个时间戳来追中他们最后应用的条目。

   为了更好的理解其原理,我们仔细看看真实的oplog以及其中的记录。连接上主节点后,切换到local数据库。local数据库中保存了所有的副本集元数据和oplog。当然,数据库本身不能被复制。正如其名,local数据库里的数据对本地节点而言是唯一的,因此不该复制。查看local数据库,会发现一个叫oplog.rs的集合,每个副本集都会把oplog保存在这个集合里。如下图所示:

   

    replset.minvalid包含了指定副本集成员的初始同步信息。system.replset保存了副本集配置文档。me和slaves用来实现写关注。startup_log是启动信息。还有replset.election包含了节点的选举信息。我们会将主要的精力集中在oplog上,查询一条前面你插入数据的那个操作相关的op条目。执行:

db.oplog.rs.find({op:"i"})
在主从节点执行的结果相同,如下图:


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值