Login
网站首页 > 文章中心 > 其它

mongodb_数据块的迁移流程分析

作者:小编 更新时间:2023-08-10 15:06:57 浏览量:403人看过

下面我将详细讲解"mongodb 数据块的迁移流程分析"的完整攻略.

什么是MongoDB数据块

在MongoDB中,数据被存储在逻辑上的数据库中,该数据库会被分片成一个个的数据块,每个数据块包含多个文档.MongoDB的分片机制将一个巨大的数据集切分成若干个小的子集,这些子集分布在集群的各个节点上.

MongoDB数据块的迁移流程分析

当一个mongos实例接收到一个读请求,如果发现数据块不在本地节点上,就会向该数据块所在节点发起请求.如果该数据块所在节点已不再负责该数据块,则需要进行数据块迁移.数据块迁移流程如下:

找到新的负责节点.当发现数据块所在节点已不再负责该数据块时,mongos会请求config server,config server会根据预先指定的分片键值范围计算出新的负责节点.

mongodb_数据块的迁移流程分析-图1

开始复制.mongos会向新的负责节点发出复制请求.新的负责节点会将数据块中的文档复制到本地.由于数据量很大,所以呢MongoDB采用了增量方式的复制.在初始阶段,数据块被标记为迁移中状态,数据变化会同时被发送到旧节点和新节点.该阶段持续的时间取决于数据块大小、网络速度和主机性能.

清除原有副本.为了保证数据块在节点之间的平衡分布,MongoDB会尽快删除原有副本.当mongod实例接收到删除请求时,它会向新负责节点发出请求,请求确认该数据块已经被成功复制,并将数据块从本地删除.

示例说明

下面分别给出两个示例说明:

假设原数据块所在节点挂掉,此时mongos需要寻找新的负责节点,并进行数据块迁移.

mongos向config server请求新的负责节点.config server根据预定的分片键值范围计算出新的负责节点.

mongos向新节点发出复制请求,新节点开始将数据块中的文档复制到本地.

为了保证数据块在节点间的平衡分布,MongoDB尽快删除原有的副本.Mongod实例向新负责节点发出请求,请求确认该数据块已经被成功复制,并将数据块从原节点删除.

新的负责节点故障后,mongos会重新找到一个新的负责节点,并重复以上流程.

总结

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章