Sharding:Balancer 操作

在 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 进程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
[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 进程是否开启

1
mongos> sh.getBalancerState();true

备注:连接到 config 库操作。

4 停 Balancer 进程

1
2
3
4
5
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 进程

1
2
3
mongos> sh.startBalancer();  
mongos> sh.getBalancerState();
true

备注:连接到 config 库操作。

6 设置 Balancer 进程运行时间窗口

默认情况下Balancing 进程时时在运行 为了降低 Balancing 进程对系统的影响,也可以设置 Balancer 进程的运行时间窗口,让 Balancer 进程在指定时间窗口操作。

1
2
3
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 进程运行时间窗口

1
2
3
4
mongos> db.settings.update({ "_id" : "balancer" }, { $unset : { activeWindow : 1 }});
mongos> db.settings.find();
{ "_id" : "chunksize", "value" : 10 }
{ "_id" : "balancer", "stopped" : false }

8 参考

http://docs.mongodb.org/manual/administration/sharding/#balancer-operations
http://docs.mongodb.org/manual/core/sharding/#sharding-balancing

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/237931.html

(0)
上一篇 2022年1月29日
下一篇 2022年1月29日

相关推荐

发表回复

登录后才能评论