mongoDB的进阶学习

来源:互联网 发布:java stringbuilder 编辑:程序博客网 时间:2024/06/05 02:55

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 tagmongos> 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
原创粉丝点击