在 sharded cluster 体系结构中,Balancer 进程的作用是转移数据,当一个 shard 中
的数据比其它 shard 的数据多并达到一定条件时,Balancer 进程触发。

为了减少 Balancer 进程对性能的消耗,当拥有最多 Chunks 的 shard 节点和拥有最少
Chunks 的 shard 节点 chunks 差着达到阀值时才触发 Balancer 进程,如下。

--1 Migration Thresholds

Number of Chunks

  Migration Threshold

 Less than 20    2
 21-80   4
 Greater than 80  8

备注:当 Balancer 进程开始执行时,会一直执行下去,直到当拥有最多 Chunks 的 shard
              节点和拥有最少 Chunks 的 shard 节点的差值小于上表阀值时结束。

--2 查看 Balancer 进程详细信息

 [shard@redhatB ~]$ mongo 127.0.0.1:7282/config
MongoDB shell version: 2.2.1
connecting to: 127.0.0.1:7282/config

mongos> db.locks.find( { _id : "balancer" } ).pretty();
{
        "_id" : "balancer",
        "process" : "redhatB.example.com:7282:1355471954:1804289383",
        "state" : 0,
        "ts" : ObjectId("50d11adc2f9d8a6566923017"),
        "when" : ISODate("2012-12-19T01:39:40.448Z"),
        "who" : "redhatB.example.com:7282:1355471954:1804289383:Balancer:846930886",
        "why" : "doing balance round"
}

--3 查看 Balancer 进程是否开启   

 mongos> sh.getBalancerState();
true  

备注:连接到 config 库操作。

--4 停 Balancer 进程

 mongos> sh.stopBalancer();
Waiting for active hosts...
Waiting for the balancer lock...
Waiting again for active hosts after balancer is off...

mongos> sh.getBalancerState();
false

备注:连接到 config 库操作。

--5 开启 Balancer 进程

 mongos> sh.startBalancer();
mongos> sh.getBalancerState();
true

备注:连接到 config 库操作。
 
 
--6  设置 Balancer 进程运行时间窗口
    默认情况下Balancing 进程时时在运行 为了降低 Balancing 进程对系统的影响,也可以设置
 Balancer 进程的运行时间窗口,让 Balancer 进程在指定时间窗口操作。

 mongos> db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "23:00", stop : "6:00" } } }, true )  ;

mongos> db.settings.find();
{ "_id" : "balancer", "activeWindow" : { "start" : "23:00", "stop" : "6:00" }, "stopped" : false }

备注:以上设置 balancer 进程在 23:00 到 6:00 时间窗口执行,如果要设置时间窗口,确保
             在指定时间段内能够完成数据分布。
 
 
--7  删除 Balancer 进程运行时间窗口

mongos> db.settings.update({ "_id" : "balancer" }, { $unset : { activeWindow : 1 }});

mongos> db.settings.find();
{ "_id" : "chunksize", "value" : 10 }
{ "_id" : "balancer", "stopped" : false }

mongo blancer的更多相关文章

  1. 谈一谈NOSQL的应用,Redis/Mongo

    1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...

  2. MongoDB分组汇总操作,及Spring data mongo的实现

    转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...

  3. mongo DB for C#

    (1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...

  4. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  5. 【mongo】mongoVUE使用

    1.查询存在字段"test"的项 {"test":{$exists:true}} 2.在表中插入字段 {$set:{"}} 3.正则匹配 {" ...

  6. mongo遍历表

    $mongo = new MongoClient("mongodb://192.168.8.189:27017"); $collectObj = $mongo->select ...

  7. python & mongo问题记录

    背景介绍 使用python操作mongo进行的一些操作记录,为了方便日后可以快速的解决类似问题. 准备工作 为了尽可能简单的说明,我将插入几条简单的数据. from pymongo import Mo ...

  8. Lind.DDD.Repositories.Mongo层介绍

    回到目录 之前已经发生了 大叔之前讲过被仓储化了的Mongodb,而在大叔开发了Lind.DDD之后,决定把这个东西再搬到本框架的仓储层来,这也是大势所趋的,毕竟mongodb是最像关系数据库的NoS ...

  9. MongoDB基础入门003--使用官方驱动操作mongo,C#

    本篇先简单介绍一下,使用官方驱动来操作MongoDB.至于MongoDB原生的增删改查语句,且等以后再慢慢学习. 一.操作MongoDB的驱动主要有两个 1.官方驱动:https://github.c ...

随机推荐

  1. Docker Swarm应用--lnmp部署WordPress

    一.简介 目的:使用Docker Swarm 搭建lnmp来部署WordPress 使用Dockerfile构建nginx.php镜像 将构建的镜像上传docker私有仓库 使用volume做work ...

  2. Linux操作系统常见安装方式

    Linux操作系统常见安装方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在window操作系统安装程序只需要点点鼠标就能搞定的事情,但是在Linux操作系统中,尤其是字符终端 ...

  3. 科学计算三维可视化---TVTK库可视化实例

    一:TVTK库可视化实例 Plot3D文件知识:PLOT3D 数据格式 PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件).网 ...

  4. ASP.NET CORE API Swagger+IdentityServer4授权验证

    简介 本来不想写这篇博文,但在网上找到的文章博客都没有完整配置信息,所以这里记录下. 不了解IdentityServer4的可以看看我之前写的入门博文 Swagger 官方演示地址 源码地址 配置Id ...

  5. Nlog写日志到数据库

    https://github.com/nlog/NLog/wiki/Database-Target

  6. bzoj千题计划129:bzoj2007: [Noi2010]海拔

    http://www.lydsy.com/JudgeOnline/problem.php?id=2007 1.所有点的高度一定在0~1之间, 如果有一个点的高度超过了1,那么必定会有人先上坡,再下坡, ...

  7. 《设计模式》-原则三:依赖倒置原则(DIP)

    这几天晚上回来都去玩了!没有坚持学习.真的好惭愧! 非常自责 后面一定要坚持 一气呵成  争取每天学一点,把这个学完. 今天主要是看了一下  设计模式中的 原则三: 依赖倒置原则(DIP) 官方是这样 ...

  8. urllib模块和urllib2模块的区别

    一开始我以为urllib2模块单纯是urllib模块的升级版,因为我看到它们都有urlopen方法,但是经过查找资料,发现两者差别还是很大的. 这是我在网上看到的总结: urllib2可以接受一个Re ...

  9. 20155330 2016-2017-2 《Java程序设计》第八周学习总结

    20155330 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 学习目标 了解NIO 会使用Channel.Buffer与NIO2 会使用日志API.国际化 ...

  10. 浅谈iOS与社交化网络

    CHENYILONG Blog 社交化网络 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  ...