MongoDB分片迁移原理与源码(1)

本文介绍了MongoDB的分片集群架构,强调了副本集的高可用性和数据复制机制。接着深入探讨了分片迁移的过程,包括数据块管理、块迁移流程和异步迁移块清理。在数据不均衡时,MongoDB通过balance功能进行数据块迁移,以保持各分片间的均衡。当迁移中断时,可能会导致数据不一致和孤儿文档问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB分片迁移原理与源码

MongoDB架构

单节点

单个节点的MongoDB实例,具备MongoDB基本的功能和服务能力,不过缺乏数据冗余和高可用,以及横向扩展的能力,一般很少在实际生产环境中使用。

副本集

MongoDB的副本集,是指一组具有相同数据的mongod节点服务的集合。副本集架构可以实现数据冗余以及高可用。
一个基本的副本集架构如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0w9c6ksg-1585748050179)(https://docs.mongodb.com/manual/_images/replica-set-read-write-operations-primary.bakedsvg.svg)]

一个副本集下,一主多备因为有用相同的数据,这种复制机制可以减少单节点下数据丢失的风险。

另外,副本集内的节点之间是通过异步复制oplog的方式,来实现节点之间数据的一致的。MongoDB的数据一致性是基于Raft协议改进实现的。

MongoDB复制流程与Raft协议有一些基本的差别,包括:

  1. 选举差异。MongoDB的节点可以设置优先级并设置了多种节点角色,Raft无此概念。MongoDB的副本集的心跳是节点两两互发的,而Raft是主节点发,备节点回复。MongoDB的主节点在不能收到大多数节点的心跳的时候,就会自动降级,防止出现多主和过期主,而Raft的主节点再收到更高任期的主节点心跳的时候才会降级。
  2. 日志复制。MongoDB的日志复制是异步过程&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值