mongoDB的进阶学习

chunk的迁移

设置迁移的时间

chunk的迁移是通过balance进程完成的,那么向已经分片好的集合插入数据的时候,balance也开始了对chunk在shard上的均衡,
为了防止数据大量写入的时候,balance进程也有可能开始chunk的迁移.为了不影响mongod的读写性能,可以根据需求选择适宜的时间来开启balance

mongos> db.settings.update({_id:"balancer"},{$set :{activeWindow:{start:'16:30',stop:'17:00'}}},{upsert:true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
mongos> db.settings.find()
{ "_id" : "chunksize", "value" : NumberLong(64) }
{ "_id" : "balancer", "activeWindow" : { "start" : "16:30", "stop" : "17:00" } }

shard tag决定chunk的分布

mongos> sh.addShardTag("middleset","普通")   ## shard tag
mongos> sh.addShardTag("smallset","教练")
mongos> sh.addTagRange('oa.ssa',{'property':1},{'property': NumberLong("-6641278325948566169")},'教练')      
mongos> sh.addTagRange('oa.ssa',{'property': NumberLong("-6641278325948566169")},{'property':NumberLong("653705064769463253")},'普通')

balance 会根据shard tag 和 chunk 的key范围进行匹配进行判断,如果不匹配那么chunk开始迁移到对应的shard

moveChunk

手动对指定chunk进行迁移.

mongos> sh.moveChunk('oa.ssa',{ "property" : NumberLong("653705064769463253") },'smallset')
                       ## db.collection , chunk key range, shard name
{ "millis" : 154120, "ok" : 1 }  

查看结果:

smallset:PRIMARY> db.ssa.distinct('property',{})
[ "普通" ]

balance 对 chunk迁移完成后,会更新config server 中的元数据,同时会删除原shard内的chunk的旧数据.

Concurrency

http://docs.mongoing.com/manual-zh/faq/concurrency.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值