MongoDB副本集分片集搭建记录
1 准备工作
关闭SELinux和防火墙
vim hosts文件
192.168.2.171
192.168.2.172
192.168.2.173
192.168.2.58
192.168.2.160
192.168.2.161
192.168.2.169
192.168.2.183
192.168.2.219
192.168.1.110
192.168.1.111
192.168.1.112
2 安装MongoDB(重要:同一个MongoDB集群所有的mongo版本必须一致,否则会报错)
①yum安装
在/etc/yum.repos.d/下边写MongoDB的repo源
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
#yum install mongodb-org -y
修改配置文件
#vim /etc/mongod.conf
添加replsetname 修改IP
#service mongod start ####启动mongodb
#mongo 192.168.2.183:27017 ####登录mongo
②源码安装
在官网下载tar包
#tar zxvf mongodb-linux-x86_64-rhel62-3.4.10.tar.gz
#mv mongodb-linux-x86_64-rhel62-3.4.10 /usr/local/mongo
#mkdir /usr/local/mongo/{data,log}
#touch /usr/local/mongo/log/mongo.log
#vi /etc/profile ####将mongo命令加入到环境变量中
export PATH=/usr/local/mongo/bin:$PATH ####在最下添加这一行
#source /etc/profile
#mongo --replSet dajiuzi --dbpath /usr/local/mongo/data --port 27017 --logpath /usr/local/mongo/log/mongo.log --fork
参数解释:--replSet 指定副本集的名字,并且开启副本集功能--dbpath 数据存放路径 --port 指定端口 --logpath 日志文件存放路径 --fork 后台运行
#mongo #####登录mongo
3 配置副本集
上面安装时已经做好了副本集的配置文件(适用于yum安装)和参数指定(适用于源码安装),所以只要登录进mongo进行配置就可以了
mongo>config = {_id: "dajiuzi", members: []}
{ "_id" : "yunxiao", "members" : [ ] }
mongo>config.members.push({_id: 0, host: "192.168.1.171:27017"})
1
mongo>config.members.push({_id: 1, host: "192.168.1.172:27017"})
2
mongo>config.members.push({_id: 2, host: "192.168.1.173:27017"})
3
mongo>rs.initiate(config)
{ "ok" : 1 }
mongo>rs.status()
此时副本集配置成功
跨网段添加节点
mongo>rs.add(“192.168.2.148:27017”) ####输另一个网段的公网IP和映射出去的端口
mongo>rs.remove(“192.168.2.148:27017”) ####删除节点
4 分片集搭建
分片集需要用到mongos和sharding的configsvr功能
在每个副本集机器上建立一个config server 和mongos
搭建config server副本集
#mongo --configsvr --replSet dajiuzi --dbpath /usr/local/mongo/data --port 27017 --logpath /usr/local/mongo/log/mongo.log --fork
mongo内部配置和副本集配置一样 config server也是一个副本集
配置mongos
#mongos --configdb dajiuzi/192.168.2.169:28000,192.168.2.183:28000,192.168.2.219:28000 --port 28000 --logpath /usr/local/mongo/log/mongos.log --fork ####mongos不需要数据存放路径,只是控制节点,--configdb 参数是config server的IP
#mongo 192.168.2.169:28000
mongos>sh.addShard("dajiuzi/192.168.2.171:27017")
{ "shardAdded" : "dajiuzi", "ok" : 1 }
mongos>sh.addShard("dabiaoge/192.168.2.58:27017")
{ "shardAdded" : "dabiaoge", "ok" : 1 }
mongos>sh.addShard("daxiongdi/192.168.2.148:27017")
{ "shardAdded" : "daxiongdi", "ok" : 1 }
mongos>sh.status()
sharding version: {...
}
shards:
{ "_id" : "dajiuzi", "host" : "dajiuzi/xxx:27017,xxx:27017" }
{ "_id" : "dabiaoge", "host" : "dabiaoge/xxx:27017,xxxx:27017,xxxx:27017" }
...