mongodb复制集(Replica sets)+分片(Sharding)环境搭建
1.创建数据目录
--server a:
# mkdir -p /data/shard1_1
# mkdir -p /data/shard2_1
# mkdir -p /data/config
--server b:
# mkdir -p /data/shard1_2
# mkdir -p /data/shard2_2
# mkdir -p /data/config
--server c:
# mkdir -p /data/shard1_3
# mkdir -p /data/shard2_3
# mkdir -p /data/config
2.配置复制集(replica sets)
--shard1:
--server a:
# cd /usr/local/mongo/bin
# ./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_1 --logpath /data/shard1_1/shard1_1.log --logappend --fork
--server b:
# cd /usr/local/mongo/bin
# ./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_2 --logpath /data/shard1_2/shard1_2.log --logappend --fork
--server c:
# cd /usr/local/mongo/bin
# ./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_3 --logpath /data/shard1_3/shard1_3.log --logappend --fork
--连接任何一个实例
# cd /usr/local/mongo/bin
# ./mongo --port 27017
> config={_id:‘shard1‘,members:[{_id:0,host:‘10.10.10.1:27017‘},{_id:1,host:‘10.10.10.2:27017‘},{_id:2,host:‘10.10.10.2:27017‘}]}
> rs.initiate(config)
--shard2:
# cd /usr/local/mongo/bin
# ./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shard2_1 --logpath /data/shard2_1/shard2_1.log --logappend --fork
--server b:
# cd /usr/local/mongo/bin
# ./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shard2_2 --logpath /data/shard2_2/shard2_2.log --logappend --fork
--server c:
# cd /usr/local/mongo/bin
# ./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shard2_3 --logpath /data/shard2_3/shard2_3.log --logappend --fork
--连接任何一个实例
# cd /usr/local/mongo/bin
# ./mongo --port 27018
> config={_id:‘shard2‘,members:[{_id:0,host:‘10.10.10.1:27018‘},{_id:1,host:‘10.10.10.2:27018‘},{_id:2,host:‘10.10.10.2:27018‘}]}
> rs.initiate(config)
3.配置配置服务器(config server)
--server a:
# cd /usr/local/mongo/bin
# ./mongod --configsvr --dbpath /data/config --port 20000 --logpath /data/config/config.log --logappend --fork
--server b:
# cd /usr/local/mongo/bin
# ./mongod --configsvr --dbpath /data/config --port 20000 --logpath /data/config/config.log --logappend --fork
--server c:
# /usr/local/mongo/bin/mongod --configsvr --dbpath /data/config --port 20000 --logpath /data/config/config.log --logappend --fork
4.配置路由进程(route process)
--server a:
/usr/local/mongo/bin/mongos --configdb 10.10.10.1:20000,10.10.10.2:20000,10.10.10.3:20000 -port 30000 --chunksize 1 --logpath /data/mongos.log --logappend --fork
--server b:
/usr/local/mongo/bin/mongos --configdb 10.10.10.1:20000,10.10.10.2:20000,10.10.10.3:20000 -port 30000 --chunksize 1 --logpath /data/mongos.log --logappend --fork
--server c:
/usr/local/mongo/bin/mongos --configdb 10.10.10.1:20000,10.10.10.2:20000,10.10.10.3:20000 -port 30000 --chunksize 1 --logpath /data/mongos.log --logappend --fork
5.配置shard集群(shard cluster)
--连接任一服务器的mongos
# /usr/local/mongo/bin/mongo --port 30000
--添加shard
> use admin
> db.runCommand({addshard:"shard1/10.10.10.1:27017,10.10.10.2:27017,10.10.10.3:27017"});
> db.runCommand({addshard:"shard2/10.10.10.1:27018,10.10.10.2:27018,10.10.10.3:27018"});
--激活sharding
# /usr/local/mongo/bin/mongo --port 30000
> use admin
> db.runCommand({enablesharding:"db1"});
> db.runCommand({shardcollection:"db1.tab1",key:{_id:1}});
6.验证分片(sharding)
--连接任一服务器mongos
# /usr/local/mongo/bin/mongo --port 30000
> use db1
> for(var i=1;i<=1000000;i++) db.tab1.insert({_id:i,c1:"testing_c1",c2:"testing_c2",c3:"testing_c3"});
> db.tab1.stats();