mongo在储存数据后,所有的数据全部存在了一个 shard中, 另两个 shard 是没问题的,
原因:
use config;
db.settings.find();
查看setting的状态:
mongos> db.settings.find()
{ "_id" : "chunksize", "value" : NumberLong(64) }
{ "_id" : "balancer", "stopped" : false }
如果 stopped是true,改为false就行了, balancer也可以设置分片时间
--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(); |
--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(); |
备注:连接到 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(); |
备注:以上设置 balancer 进程在 23:00 到 6:00 时间窗口执行,如果要设置时间窗口,确保
在指定时间段内能够完成数据分布。
--7 删除 Balancer 进程运行时间窗口
mongos> db.settings.update({ "_id" : "balancer" }, { $unset : { activeWindow : 1 }});
mongos> db.settings.find(); |