一,Mongodb Replica Sets部署
1.先建好几个目录,放置数据
数据文件
E:\MongoDB\data1
E:\MongoDB\data2
E:\MongoDB\data3
2.开始搭建,启动三个MongoDB Server
mongod --replSet prod --port 27017 --dbpath e:\mongodb\data13.进入其中一个mongodb中,完成相关的配置mongod --replSet prod --port 27027 --dbpath e:\mongodb\data2mongod --replSet prod --port 27037 --dbpath e:\mongodb\data3
replica_config = {_id: 'prod', members: [ {_id: 0, host: 'localhost:27017'}, {_id: 1, host: 'localhost:27027'}, {_id: 2, host: 'localhost:27037'}]} #Now initiate the replica_config rs.initiate(replica_config);
4. rs.status() // 通过查看状态可知晓新增节点有以下过程
5.db.getMongo().setSlaveOk()
6.ok,就可以了,
myrs:SECONDARY> db.bank.find()
{ "_id" : 0, "name" : "joe", "age" : "50", "score" : 99 }
{ "_id" : 1, "name" : "joe", "age" : "60", "score" : 99 }
{ "_id" : 2, "name" : "joe", "age" : "70", "score" : 99 }
{ "_id" : ObjectId("4ec3849baa5bff10ca03145b"), "computer" : "mac" }
可以看到数据已经同步过来。
7.新增replica set 节点,配置和启动如上述步骤。下面将新加节点192.168.8.207:28010加入复制集中。
rs1:PRIMARY> rs.add({_id:3,host:"hostlocal:27047"})
rs1.PRIMARY> rs.status() //通过查看状态可知晓新增节点有以下过程
8.通过如下命令删除节点:
rs1:PRIMARY> rs.remove("hostlocal:27037")
rs1:PRIMARY> rs.status()
二,Sharding
1. 先建好几个文件夹
E:\MongoDB\Data\shard\s1
E:\MongoDB\Data\shard\s0
E:\MongoDB\Data\shard\log
E:\MongoDB\Data\shard\config
2.启动Shard Server
1) mongod --shardsvr --port 20000 --dbpath e:\mongodb\data\shard\s0 --logpath e:\mongodb\data\shard\log\s0.log --directoryperdb
2) mongod --shardsvr --port 20001 --dbpath e:\mongodb\data\shard\s1 --logpath e:\mongodb\data\shard\log\s1.log --directoryperdb
3. 启动Config Server
1) mongod --configsvr--port 30000 --dbpath e:\mongodb\data\shard\config --logpath e:\mongodb\data\shard\log\config.log --directoryperdb
4. 启动Route Process
1) mongos --port 40000 --configdb localhost:30000 --logpath e:\mongodb\data\shard\log\route.log --chunkSize:1
5. 配置Sharding
1). 先连接DB
MONGO ADMIN --port 40000
2) db.runCommand({addshard:"localhost:20000"})
3) db.runCommand({addshard:"localhost:20001"})
4) db.runCommand({enablesharding:"test"})
5) db.runCommand({ shardcollection:"test.users",key:{_id:1}})
6. 验证Sharding
给test.users表插入测试数据
1).use test
2) for(var i=1;i<=5000000;i++) db.users.insert({age:i,name:“fanfenghua”,addr:"SuZhou",country:"China"})
验证:
db.users.stats()
7.维护Sharding
1) 列出所有的Shard Server
db.runCommand({listshards:1})
2) 查看sharding信息
printShardingStatus()
3). 判断是否是sharding
db.runCommand({isdbgrid:1})
8. 对现有的表执行sharding
1) db.runCommand({ shardcollection:"test.users",key:{_id:1}})
9 新增Shard Server
db.runCommand({addshard:"localhost:20002"})
10.移除Shard Server:
db.runCommand({removeshard:"localhost:20002"})