时间:2021-07-01 10:21:17 帮助过:23人阅读
#启动了4个进程
ps aux|grep mongo
#连接路由
./bin/mongo --port 30000
#添加分片
sh.addShard(‘192.168.119.128:27017‘)
sh.addShard(‘192.168.119.128:27018‘)
sh.status()
#指定库分片
sh.enableSharding(‘shop‘)
#指定集合,以某个键分
sh.shardCollection(‘shop.goods‘,{goods_id:1})
#查看chunksize默认大小
use config show tables db.settings.find() #默认为64M,修改为1M db.settings.save({_id:‘chunksize‘,value:1})
#分别查看27017和27018 数据存储情况 use shop db.goods.count(); #查看分片情况 sh.status();
既然优先往某个片上插入,当chunk失衡时,再移动chunk,自然,随着数据的增多,shard的实例之间,有chunk来回移动的现象; 服务器之间IO的增加!
#预先分片
for(var i=1;i<=40;i++) { sh.splitAt(‘shop.user‘,{userid:i*1000}) }
以shop.user表为例 1: sh.shardCollection(‘shop.user’,{userid:1}); //user表用userid做shard key 2: for(var i=1;i<=40;i++) { sh.splitAt(‘shop.user‘,{userid:i*1000}) } // 预先在1K 2K...40K这样的界限切好chunk(虽然chunk是空的),
这些chunk将会均匀移动到各片上. 3: 通过mongos添加user数据. 数据会添加到预先分配好的chunk上, chunk就不会来回移动了.
Mongodb 分片
标签:gre count find pre 声明 路由 服务 sha 分片