码迷,mamicode.com
首页 > 数据库 > 详细

Mongodb 分片

时间:2017-02-06 19:33:18      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:gre   count   find   pre   声明   路由   服务   sha   分片   

mkdir -p /home/m17 /home/m18 /home/m20 /home/mlog

#声明实例

./bin/mongod --dbpath /home/m17/ --logpath /home/mlog/m17.log --fork --port 27017 --smallfiles
./bin/mongod --dbpath /home/m18/ --logpath /home/mlog/m18.log --fork --port 27018 --smallfiles

#指定为configsvr
./bin/mongod --dbpath /home/m20/ --logpath /home/mlog/m20.log --fork --port 27020 --configsvr

#为路由指定configsvr .
/bin/mongos --logpath /home/mlog/m30.log --port 30000 --configdb 192.168.119.128:27020 --fork

#启动了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   分片   

原文地址:http://www.cnblogs.com/tianboblog/p/6371373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!