mongoDB——split&balance操作
2016-03-31 22:17
495 查看
split&balance整体流程
正如三国中说的,分久必合合久必分、mongoDB数据库也是处于分分合合的动态平衡中。但这里所谓的“合”,只是针对shard所属的chunk块而言的。split&balance处理示意图:
处理流程
①、发送write请求。②、数据写之前,检测到chunk块的大小超过了预设值(默认是64MB,可变动),进行split
③、chunk数据信息发生变化,更新config server中的metadata信息
④、由于shard中chunk的个数引发数据不均衡,经过判断,chunk块向相邻的shard中做copy
⑤、由于chunk块位置信息发生变化,再次更新config server中的metadata信息
⑥、删除copy源的chunk块
⑦、反馈write结果
⑧、传送
➈、客户端显示写成功信息
这里为了描述整个流程,特意串行处理了,实际上,逻辑处理时,write操作引发的split跟balance是不同的线程并行去处理的,大家不要误解。
Split
split示意图如下所示:处理流程:
chunk的size默认是64MB,可变更的。
insert/update操作会导致超出chunk的预设大小。
mongos进程一直开启,检测到后,会将目标chunk分裂成2个等大的新的chunk1和chunk2.
分裂成功后,更新config server中metadata的数据。
Balance
示意图如下所示:处理流程:
#mongos检测到整个集群中chunk块的数据分布不均衡
mongos将moveChunk命令发送到Shard B中
内部命令moveChunk在Shard B中执行
Shard C从Shard B中获取需要移动的chunk块
获取后,同期化所有的变动
一同期化,立马更新config server中的metadata信息
chunk的copy成功后,删除Shard B中copy元的chunk块
相关文章推荐
- mongoDB——read&write操作
- mongoDB——shard简介
- 【转】mongodb分布式集群
- Linux下mongodb的安装
- mongoDB——router server
- mongodb使用小结
- MongoDB常用操作命令大全
- mongodb设置远程连接
- mongoDB——metadata之我见
- MongoDB使用
- Spring Data MongoDB 三:基本文档查询(query、BasicQuery)
- 在Windows环境下MongoDB搭建和简单操作
- Mongodb索引实战
- MongoDB管理:慎用local、admin数据库
- mongodb的安装简述
- mongodb的write concern
- mongodb查看数据库和表的信息
- Windows安装及运行mongodb
- Centos安装mongodb
- node.js学习笔记(7)--Node.js与MongoDB简单交互