#解壓 tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz mv mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz mongodb cd mongodb #建立存儲數據目錄 mkdir data cd data #建立存放數據庫的目錄db和存放日誌信息的目錄log mkdir db log cd log touch MongoDB.log
啓動:html
cd /home/nosql/mongodb/bin ./mongod --dbpath="/home/nosql/mongodb/data/db/" --logpath="/home/nosql/mongodb/data/log/MongoDB.log" –httpinterface
進入shell窗口linux
./mongo
Mongo支持三種集羣方式:Replica Set (副本集)/ Sharding(數據分片/ Master-Slaver(主從)sql
分片數據文件存儲目錄:mongodb
cd data mkdir -p shard1/db1-1 shard1/db1-2 shard1/db1-3 shard2/db2-1 shard2/db2-2 shard2/db2-3 shard3/db3-1 shard3/db3-2 shard3/db3-1
配置shell
mkdir -p config/configdb1 config/configdb2 config/configdb3
./mongod --dbpath=../data/shard1/db1-1/ --port 11001 --replSet db1 --logpath=../data/log/db1-1.log --pidfilepath=../data/db1-1.pid & ./mongod --dbpath=../data/shard1/db1-2/ --port 11002 --replSet db1 --logpath=../data/log/db1-2.log --pidfilepath=../data/db1-2.pid & ./mongod --dbpath=../data/shard1/db1-3/ --port 11003 --replSet db1 --logpath=../data/log/db1-3.log --pidfilepath=../data/db1-3.pid &
./mongod --dbpath=../data/shard2/db2-1/ --port 21001 --replSet db2 --logpath=../data/log/db2-1.log --pidfilepath=../data/db2-1.pid & ./mongod --dbpath=../data/shard2/db2-2/ --port 21002 --replSet db2 --logpath=../data/log/db2-2.log --pidfilepath=../data/db2-2.pid & ./mongod --dbpath=../data/shard2/db2-3/ --port 21003 --replSet db2 --logpath=../data/log/db2-3.log --pidfilepath=../data/db2-3.pid &
./mongod --dbpath=../data/shard3/db3-1/ --port 31001 --replSet db3 --logpath=../data/log/db3-1.log --pidfilepath=../data/db3-1.pid & ./mongod --dbpath=../data/shard3/db3-2/ --port 31002 --replSet db3 --logpath=../data/log/db3-2.log --pidfilepath=../data/db3-2.pid & ./mongod --dbpath=../data/shard3/db3-3/ --port 31003 --replSet db3 --logpath=../data/log/db3-3.log --pidfilepath=../data/db3-3.pid &
./mongo --port 11001 config={ ... "_id":"db1", ... "members":[ ... {"_id":0,"host":"192.168.111.139:11001"}, ... {"_id":1,"host":"192.168.111.139:11002"}, ... {"_id":2,"host":"192.168.111.139:11003"} ... ] ... } rs.initiate(config) exit
./mongo --port 21001 config={ ... "_id":"db2", ... "members":[ ... {"_id":0,"host":"192.168.111.139:21001"}, ... {"_id":1,"host":"192.168.111.139:21002"}, ... {"_id":2,"host":"192.168.111.139:21003"} ... ] ... } rs.initiate(config) exit
./mongo --port 31001 config={ ... "_id":"db3", ... "members":[ ... {"_id":0,"host":"192.168.111.139:31001"}, ... {"_id":1,"host":"192.168.111.139:31002"}, ... {"_id":2,"host":"192.168.111.139:31003"} ... ] ... } rs.initiate(config) exit
./mongod --configsvr --dbpath=../data/config/configdb1 --port 20000 --logpath=../data/log/configdb1.log –pidfilepath=../data/config/configdb1.pid & ./mongod --configsvr --dbpath=../data/config/configdb2 --port 20001 --logpath=../data/log/configdb2.log –pidfilepath=../data/config/configdb2.pid & ./mongod --configsvr --dbpath=../data/config/configdb3 --port 20002 --logpath=../data/log/configdb3.log --pidfilepath=../data/config/configdb3.pid &
./mongos --port 30000 --configdb 192.168.111.139:20000,192.168.111.139:20001,192.168.111.139:20002 --logpath=../data/log/mongos.log &
#鏈接到mongos數據庫
./mongo --port 30000
#使用admin數據庫json
use admin
#串聯路由服務器與分配副本集1ubuntu
sh.addShard("db1/192.168. 111.139:11001")
#串聯路由服務器與分配副本集2bash
sh.addShard("db2/192.168. 111.139:21001")
#串聯路由服務器與分配副本集3服務器
sh.addShard("db3/192.168. 111.139:31001")
#查看分片服務器的配置
db.runCommand({listshards:1})
一樣是在admin數據庫下
#指定test分片生效
db.runCommand({"enablesharding":"0929test"})
#指定數據庫裏須要分片的集合和片鍵
sh.shardCollection("0929test.person",{_id:'hashed'})
測試
use 0929test
插入測試數據:
for(var i=0;i<100000;i++){db.person.insert({name:"lzq"+i});}
查看分片信息:
查看分片狀況,省略了部分信息
db.person.stats();
#分片信息: { "sharded": true, "capped": false, "ns": "0929test.person", "count": 100000, "size": 4088890, "storageSize": 2080768, "totalIndexSize": 5459968, "indexSizes": { "_id_": 958464, "_id_hashed": 4501504 }, "avgObjSize": 40.8889, "nindexes": 2, "nchunks": 6, "shards": { "db1": { "ns": "0929test.person", "count": 33250, "size": 1359581, "avgObjSize": 40, "storageSize": 692224, "capped": false, "nindexes": 2, "totalIndexSize": 1847296, "indexSizes": { "_id_": 315392, "_id_hashed": 1531904 }, "ok": 1 }, "db2": { "ns": "0929test.person", "count": 33372, "size": 1364574, "avgObjSize": 40, "storageSize": 692224, "capped": false, "nindexes": 2, "totalIndexSize": 1785856, "indexSizes": { "_id_": 323584, "_id_hashed": 1462272 }, "ok": 1 }, "db3": { "ns": "0929test.person", "count": 33378, "size": 1364735, "avgObjSize": 40, "storageSize": 696320, "capped": false, "nindexes": 2, "totalIndexSize": 1826816, "indexSizes": { "_id_": 319488, "_id_hashed": 1507328 }, "ok": 1 } }, "ok": 1 }
能夠看出分片比較均勻
參考資料:
http://www.lanceyan.com/tech/arch/mongodb_shard1.html
http://blog.csdn.net/luonanqin/article/details/8497860
http://www.jianshu.com/p/2825a66d6aed