mongobd分片 之 balancer常用命令
程序员文章站
2024-03-19 22:40:34
...
[toc]
#
均衡器¶
The balancer attempts to evenly distribute a sharded collection’s chunks across all shards in the cluster.
对于每一个标记为要迁移的 chunk ,均衡器检查所有配置区域内的每一个可能的目标分片。如果数据块范围属于某一个区域,那么均衡器就会将该数据块迁移到该区域上的一个分片。不属于任何区域的数据块可以存在于集群中的 任何 分片,并且正常迁移。
在均衡过程中,如果均衡器检测到任何违背已配置区域上给定的分片,均衡器将会把这些数据块迁移到不存在冲突的分片上。
在使用一个片键范围配置区域,并且将它与一个或多个分片关联起来之后,集群可能会花费一些时间来迁移影响的数据。这依赖于数据块的划分以及目前集群中数据的分布。当均衡完成之后,在某一给定区域的文档读取和写入将只会路由到该区域内的一个分片或几个分片。
一旦配置完成后,均衡器将在 balancing rounds 中重新检查区域。
#
查看在 shards 间迁移 数据块 的 balancer 是 打开或关闭
sh.isBalancerRunning()#查看在 shards 间迁移 数据块 的 balancer 是 打开或关闭.
1、开启关闭balanceer
关闭balancer
mongos> use config
switched to db config
mongos> sh.getBalancerState()
true
mongos> sh.stopBalancer()
Waiting for active hosts...
Waiting for the balancer lock...
Waiting again for active hosts after balancer is off...
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "balancer" })
mongos> sh.getBalancerState()
false
#开启
mongos> sh.setBalancerState(true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
mongos> sh.getBalancerState()
true
mongos>
2、关闭或开启某张表的balanceer
#开启
mongos> sh.disableBalancing('testdb.table1')
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
#查看
mongos> db.getSiblingDB("config").collections.findOne({_id:'testdb.table1'}).noBalance;
true
#关闭
mongos> sh.enableBalancing('testdb.table1')
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
mongos> db.getSiblingDB("config").collections.findOne({_id:'testdb.table1'}).noBalance;
false
mongos> sh.disableBalancing('testdb.table1')
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
mongos> db.getSiblingDB("config").collections.findOne({_id:'testdb.table1'}).noBalance;
true
#
sh.getBalancerHost()
返回一个布尔值,报告当前是否有均衡器在进行数据块的迁移.返回负责均衡过程的一个mongos 名字.
sh.status()
内部命令,等待指定的 sharded cluster 分布锁.
上一篇: js实现判断用户浏览器跳转移动或pc页面
下一篇: Servlet实现页面访问量统计实例