一、环境准备
1、Centos7
2、mongodb3.4.2
3、三台机器IP分别是:192.168.0.139、192.168.0.178、192.168.0.183
二、mongdb数据库的安装
如下操作是分别在三台机器进行
1、首先分别在三台机器上下载好mongodb安装包mongodb-linux-x86_64-rhel70-3.4.2.tgz
cd /usr/local/
mkdir data
cd data
wget https://bbcbackup.oss-cn-shenzhen.aliyuncs.com/run/linux/mongodb-linux-x86_64-rhel70-3.4.2.tgz
2、使用tar命令解压安装包然后修改解压后的目录名
tar zxvf mongodb-linux-x86_64-rhel70-3.4.2.tgz #解压安装包
mv mongodb-linux-x86_64-rhel70-3.4.2 mongodb #改名为mongodb
3、 进入 mongodb目录中新建三个目录conf、logs 、db
conf存储配置文件目录,logs用来存储日志目录,db用来存储数据目录
cd mongodb
mkdir conf logs db #新建conf logs db 目录
4、进入conf目录新建mongodb的配置文件mongodb.conf
cd conf
touch mongodb.conf #新建mongodb的mongodb.conf 配置文件
5、编写配置文件mongodb.conf,内容如下
其中dbpath是数据库文件目录,logpath是日志目录,port是mongodb所占用的端口,fork是true的时候表示在后台启动
dbpath=/usr/local/data/mongodb/db
logpath=/usr/local/data/mongodb/logs/mongodb.log
port=27017
fork=true
6、分别在三台机器上启动mongodb
其中–replSet表示副本集群参数 ,mongoTest是副本集名称,这里的名字可以任意取,另外两台机也要和这个一样
/usr/local/data/mongodb/bin/mongod --config /usr/local/data/mongodb/conf/mongodb.conf --replSet mongoTest
如果启动成功会看到类似下面的提示
about to fork child process, waiting until server is ready for connections.
forked process: 16079
child process started successfully, parent exiting
三、配置mongodb副本集
下面对mongodb副本集进行初始化
1、进入其中一台机器的mongo shell操作
/usr/local/data/mongodb/bin/mongo -port 27017
2、 使用admin库
use admin
3、mongo副本配置
config={_id:'mongoTest',members:[{_id:0,host:'192.168.0.139:27017'},{_id:1,host:'192.168.0.178:27017'},{_id:2,host:'192.168.0.183:27017'}]}
提示下图,初始化完毕
在这里我遇到的这个问题,OK:0
{
"ok" : 0,
"errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 192.168.0.178:27017 failed with No route to host, 192.168.0.183:27017 failed with No route to host",
"code" : 74,
"codeName" : "NodeNotFound"
}
提示这个只需要把防火墙关了,或者添加端口就可以解决
systemctl stop firewalld.service
然后重复上面的三个步骤就行了。
4、查看详细
mongoTest:OTHER> rs.status()
{
"set" : "mongoTest",
"date" : ISODate("2018-09-06T01:39:10.349Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1536197949, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1536197949, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1536197949, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "192.168.0.139:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 674,
"optime" : {
"ts" : Timestamp(1536197949, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-09-06T01:39:09Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1536197878, 1),
"electionDate" : ISODate("2018-09-06T01:37:58Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "192.168.0.178:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 82,
"optime" : {
"ts" : Timestamp(1536197939, 1),
"t" : NumberLong(1)
若显示上列信息则说明集群搭建成功