|
这两天在做mongodb集群的实验,然后写下这篇文章来总结一下也算是个笔记吧。
机器有限,就在一台机器上面做了,还是台虚拟机。。。
图就不画了(其实是画了,但是很难看就不帖出来了)
IP:192.168.47.131
#########这三台实例组成shard1ReplSet####################
shard11:10011
shard12:10012
shard13:10013
#########这三台实例组成shard2ReplSet####################
Shard21:10021
Shard22:10022
Shard23:10023
#########三台nongos和三台configsvr的端口信息############
mongos 10041 10042 10043
configsvr 10031 10032 10033
#######################################################################
以上是本次搭建的端口信息
##################################################################
常规步骤:
tar xf mongodb-linux-x86_64-rhel62-3.4.2.tgz 解压
mv mongodb-linux-x86_64-rhel62-3.4.2 /mongodb 移动到根目录并重命名
添加环境变量(mongodb需要用到jdk,请自行安装,并添加环境变量)
JAVA_HOME=/usr/java/jdk1.8.0_121
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
MONGO_HOME=/mongodb/bin
创建本次集群需要的目录:
mkdir -p /mongodb/data/{config1,config2,config3,shard1ReplSet11,shard1ReplSet12,shard1ReplSet13,shard2ReplSet21,shard2ReplSet22,shard2ReplSet23}
mkdir -p /mongodb/logs/{config1,config3,mongos42,shard1ReplSet11,shard1ReplSet13,shard2ReplSet22,config2,mongos41,mongos43,shard1ReplSet12,shard2ReplSet21,shard2ReplSet23}
创建log文件:
touch /mongodb/logs/config1/config1.log
touch /mongodb/logs/config2/config2.log
touch /mongodb/logs/config3/config3.log
touch /mongodb/logs/shard1ReplSet11/10011.log
touch /mongodb/logs/shard1ReplSet12/10012.log
touch /mongodb/logs/shard1ReplSet13/10013.log
touch /mongodb/logs/shard2ReplSet21/10021.log
touch /mongodb/logs/shard2ReplSet22/10022.log
touch /mongodb/logs/shard2ReplSet23/10023.log
touch /mongodb/logs/mongos41/10041.log
touch /mongodb/logs/mongos42/10042.log
touch /mongodb/logs/mongos43/10043.log
开始啦
1、分别启动各个configServer服务,分别占10031 10032 10033端口:
mongod --configsvr --replSet cfgReplSet --dbpath /mongodb/data/config1 --port 10031 --logpath /mongodb/logs/config1/config1.log --fork
mongod --configsvr --replSet cfgReplSet --dbpath /mongodb/data/config2 --port 10032 --logpath /mongodb/logs/config2/config2.log --fork
mongod --configsvr --replSet cfgReplSet --dbpath /mongodb/data/config3 --port 10033 --logpath /mongodb/logs/config3/config3.log --fork
看到提示successfully就是成功啦
连接到任意一台configsvr去创建configsvr的副本集(Replica Set)
连接:mongo --host 192.168.47.131 --port 10031
创建:rs.initiate({_id:"cfgReplSet", configsvr:true, members:[{_id:0,host:"192.168.47.131:10031"},{_id:1,host:"192.168.47.131:10032"},{_id:2,host:"192.168.47.131:10033"}]})
上面的端口是上面已经规划好了的,这个里面填的是configsvr的IP和端口
2、创建两个shard的副本集以及初始化
创建第一个Replica Set
以集群的方式启动分片shard11,shard12,shard13 占10011,10012,10013端口:
mongod --shardsvr --replSet shard1ReplSet --dbpath /mongodb/data/shard1ReplSet11 --port 10011 --logpath /mongodb/logs/shard1ReplSet11/10011.log --fork
mongod --shardsvr --replSet shard1ReplSet --dbpath /mongodb/data/shard1ReplSet12 --port 10012 --logpath /mongodb/logs/shard1ReplSet12/10012.log --fork
mongod --shardsvr --replSet shard1ReplSet --dbpath /mongodb/data/shard1ReplSet13 --port 10013 --logpath /mongodb/logs/shard1ReplSet13/10013.log --fork
连接任意一台分片服务器
mongo --host 192.168.47.131 --port 10011
将上面的三台启动好了的分片设置为一个Raplica Set
rs.initiate({_id:"shard1ReplSet",members:[{_id:0,host:"192.168.47.131:10011"},{_id:1,host:"192.168.47.131:10012"},{_id:2,host:"192.168.47.131:10013"}]})
创建第二个Replica Set
以集群的方式启动分片shard21,shard22,shard23,占10021,10022,10023端口:
mongod --shardsvr --replSet shard2ReplSet --port 10021 --dbpath /mongodb/data/shard2ReplSet21 --logpath /mongodb/logs/shard2ReplSet21/10021.log --fork
mongod --shardsvr --replSet shard2ReplSet --port 10022 --dbpath /mongodb/data/shard2ReplSet22 --logpath /mongodb/logs/shard2ReplSet22/10022.log --fork
mongod --shardsvr --replSet shard2ReplSet --port 10023 --dbpath /mongodb/data/shard2ReplSet23 --logpath /mongodb/logs/shard2ReplSet23/10023.log --fork
连接任意一台分片服务器
mongo --host 192.168.47.131 --port 10021
将上面的三台分片设置为Replica Set
rs.initiate({_id:"shard2ReplSet",members:[{_id:0,host:"192.168.47.131:10021"},{_id:1,host:"192.168.47.131:10022"},{_id:2,host:"192.168.47.131:10023"}]})
3、分别启动mongos,分别占:10041 10042 10043端口:
启动服务:
mongos --configdb cfgReplSet/192.168.47.131:10031,192.168.47.131:10032,192.168.47.131:10033 --port 10041 --logpath /mongodb/logs/mongos41/10041.log --fork
mongos --configdb cfgReplSet/192.168.47.131:10031,192.168.47.131:10032,192.168.47.131:10033 --port 10042 --logpath /mongodb/logs/mongos42/10042.log --fork
mongos --configdb cfgReplSet/192.168.47.131:10031,192.168.47.131:10032,192.168.47.131:10033 --port 10043 --logpath /mongodb/logs/mongos43/10043.log --fork
上面填的是configsvr的信息(参照前面configsvr的定义)
登录一台路由:
mongo --host 192.168.47.131 --port 10041
添加分片到集群
sh.addShard("shard1ReplSet/192.168.47.131:10011,192.168.47.131:10012,192.168.47.131:10013")
sh.addShard("shard2ReplSet/192.168.47.131:10021,192.168.47.131:10022,192.168.47.131:10023")
将上面做的两个Replica Set 添加到路由
上面都没报错的话,mongodb的Replica Set和sharding就已经搭建好了。三个configsvr,mongos和六个分片随便down哪个都不会影响到数据
测试(连接到路由去测,如何登录路由看上面)
创建一个数据库
sh.enableSharding("test")
sh.shardCollection("test.Log", {> 插入10W条数据
use test
for(var i = 1; i |
|