分片数据流向
mongos(路由)-->mongocnf(配置集)-->N(N>2)个mongod(实例)
1、建立两个普通的mongod进程
普17:127.0.01:27017
普18: 127.0.0.1:27018
首先,建立路径放置各个mongodb进程的数据文件、日志文件。
普17: mkdir -p data/db17
普18: mkdir -p data/db18
配30:mkdir -p data/db30
配31:mkdir -p data/db31
配32:mkdir -p data/db32
路40:mkdir -p data/db40
开启mongodb进程
mongod --port 27017 --dbpath data/db17 --logpath data/db17/db.log --fork --shardsvr
mongod --port 27018 --dbpath data/db18 --logpath data/db18/db.log --fork --shardsvr
2、1建立配置服务器实例
mongod --port 27030 --dbpath data/db30 --logpath data/db30/db.log --fork --configsvr --replSet conf0
mongod --port 27031 --dbpath data/db31 --logpath data/db31/db.log --fork --configsvr --replSet conf0
mongod --port 27032 --dbpath data/db32 --logpath data/db32/db.log --fork --configsvr --replSet conf0
2、2配置配置服务器复制集
> mongo --port 27030
>cfg={
_id:"conf0",
members:[
{_id:0, host:'127.0.0.1:27030'},
{_id:1, host:'127.0.0.1:27031'},
{_id:2, host:'127.0.0.1:27032'}
]}
>rs.initiate(cfg)
3、启动路由
mongos --port 27040 --logpath data/db40/db.log --configdb "conf0/127.0.0.1:27030,127.0.0.1:27031,127.0.0.1:27032" --fork
此时路由和配置服务器已经建立联系
查看启动的mongo进程
ps aux | grep mongo
4、连接路由,将实例加入片集
mongo --port 27040
sh.addShard("127.0.0.1:27017")
sh.addShard("127.0.0.1:27018")
sh.status() --查看状
5、允许分片
sh.enableSharding("zws");
sh.shardCollection('zws.foo',{"foo_id":1})
默认分片时64M,为了看出分片的效果可以将其改为1。
use config
db.settings.find() --没有值默认为64M
db.settings.save({"_id":"chunksize","value":1}) --改为1M
db.settings.find()
6、插入数据
use zws
for (var i=1; i<=100000;i++){db.foo.insert({"foo_id":i,"foo_name":"zzwsdvvvvvvvvvvvvvvvvvvvvv"});}
7、另开两个窗口查看分片结果
mongo --port 27017
use zws
db.foo.count()
mongo --port 27018
use zws
db.foo.count()