1、安装准备:
1.1 、系统为redhat7.0,MongoDB版本为3.6.3
MongoDB包下载地址:http://www.mongodb.org/downloads
mongodb-linux-x86_64-enterprise-rhel70-3.6.3
1.2补包
配置本地源:(系统光盘复制到/tools/rhel_dvd下)
[root@localhost ~]# vim /etc/yum.repos.d/rhel_dvd.repo
[rhel_dvd] name=rhel_dvd baseurl=file:///tools/rhel_dvd/ enabled=1 gpgcheck=0
[root@localhost yum.repos.d]# yum install cyrus-sasl-gssapi [root@localhost yum.repos.d]# yum install net-snmp
1.3 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
关闭SElinux 编辑配置文件
setenforce 0
[root@localhost yum.repos.d]# vim /etc/selinux/config
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive #修改此参数 # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
2、安装MongoDB
1.1 上传mongodb包至linux服务器
具体放置到目录:/tools
1.2新建 /mongodb目录
新建数据文件存放目录与log存放目录/conf文件
[root@localhost /]# mkdir /mongodb/data
[root@localhost /]# mkdir /mongodb/logs
[root@localhost /]# mkdir /mongodb/conf
新建mongodb.log文件
[root@localhost logs]# touch mongodb.log
[root@localhost tools]# cp mongodb-linux-x86_64-enterprise-rhel70-3.6.3.tgz /mongodb/
[root@localhost mongodb]# cd /mongodb/
[root@localhost mongodb]# tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-3.6.3.tgz
[root@localhost mongodb-linux-x86_64-enterprise-rhel70-3.6.3]# mv * /mongodb/
配置环境变量
[root@localhost mongodb]# vim /etc/profile
在文件最后添加:
export MONGODB_HOME=/mongodb export PATH=$PATH:$MONGODB_HOME/bin
使配置生效:
source /etc/profile
配置mongodb.conf文件
[root@localhost conf]# vim /mongodb/conf/mongodb.conf
dbpath = /mongodb/data #数据文件存放目录 logpath = /mongodb/logs/mongodb.log #日志文件存放目录 port = 27017 #端口 fork = true #以守护程序的方式启用,即在后台运行 bind_ip=127.0.0.1,10.91.250.132 #局域远程访问本机IP
配置文件主要包括以下配置项:
dbpath = \ 指定数据的存放位置,必需项 logpath = \ 指定日志的存放位置 logappend = \ 日志以追加方式写入 pidfilepath = \ 存放启动mongod是分配的进程号 bind_ip = \ mongod监听的ip,可以不设置,不设置时,通过机器的ip访问 port = \监听的端口号,务必设置,默认的端口不安全 directoryperdb = \为每个数据库的数据分配一个存储目录,建议设置,数据更好管理 journal=\ 启用恢复日志,如果mongod意外退出,下一次启动时会根据恢复日志进行恢复,但恢复日志所占空间比较大。建议设置true keyFile = \指定使用的key的路径,集群中的所有节点都要使用相同的key才能相互连接。(在集群搭建完成之前,不应当使用keyFile,否则在部署副本集和分片时会出现没有权限操作的情况) auth = \ 是否使用授权认证机制,集群使用时,应当使用auth=true,但在集群部署时不应该使用auth=true noprealloc = \ 是否预分配空间,预分配空间比较占空间;不预分配空间可能对性能有影响。 replSet = \节点所属副本集的名称 fork 务必将fork选项设置为true,否则当启动节点的终端意外退出时,节点的运行进程会被杀掉
启动mongoDB
[root@localhost conf]# mongod --config /mongodb/conf/mongodb.conf
MongoDB设置为系统服务
[root@localhost /]# vim /etc/rc.d/init.d/mongod
ulimit -SHn 655350 #!/bin/sh ## chkconfig: - 64 36 ## description:mongod case $1 in start) mongodb/bin/mongod --config /mongodb/conf/mongodb.conf ;; stop) mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()" ;; status) mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()" ;; esac
添加脚本执行权限:
[root@localhost /]# chmod +x /etc/rc.d/init.d/mongod
二、redhat7.0 中MongoDB3.6.3 集群搭建
1、以上为模板建三台mongoDB主机2、三台机器IP分别是:10.91.250.141、10.91.250.142、10.91.250.143
3、编辑/mongodb/conf/mongodb.conf,加各节点IP
bind_ip=127.0.0.1,10.91.250.141 #节点本机IP
4、分别在三台机器上启动mongodb
其中–replSet表示副本集群参数 ,mongoTest是副本集名称,这里的名字可以任意取,另外两台机也要和这个一样
mongod -f /mongodb/conf/mongodb.conf --replSet repset
如果启动成功会看到类似下面的提示
[root@localhost ~]# mongod -f /mongodb/conf/mongodb.conf --replSet mongotest about to fork child process, waiting until server is ready for connections. forked process: 2641 child process started successfully, parent exiting
三、配置mongodb副本集
1、初始化副本集
进入其中一台机器的mongo shell操作
[root@localhost ~]# mongo -port 27017
2、使用admin库
MongoDB Enterprise > use admin
switched to db admin
3、mongo副本配置
MongoDB Enterprise repset:PRIMARY> config={_id:"repset",members:[{_id:0,host:"10.91.250.141:27017"},{_id:1,host:"10.91.250.142:27017"},{_id:2,host:"10.91.250.143:27017"}]}
MongoDB Enterprise > rs.initiate(config)
上图表示初始化完毕
4、查看replica sets状态
MongoDB Enterprise repset:OTHER> rs.status() { "set" : "repset", "date" : ISODate("2018-04-19T00:50:57.540Z"), "myState" : 1, "term" : NumberLong(1), "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "readConcernMajorityOpTime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "appliedOpTime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "durableOpTime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) } }, "members" : [ { "_id" : 0, "name" : "10.91.250.141:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 802, "optime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2018-04-19T00:50:55Z"), "infoMessage" : "could not find member to sync from", "electionTime" : Timestamp(1524099024, 1), "electionDate" : ISODate("2018-04-19T00:50:24Z"), "configVersion" : 1, "self" : true }, { "_id" : 1, "name" : "10.91.250.142:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 44, "optime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "optimeDurable" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2018-04-19T00:50:55Z"), "optimeDurableDate" : ISODate("2018-04-19T00:50:55Z"), "lastHeartbeat" : ISODate("2018-04-19T00:50:56.062Z"), "lastHeartbeatRecv" : ISODate("2018-04-19T00:50:56.790Z"), "pingMs" : NumberLong(0), "syncingTo" : "10.91.250.141:27017", "configVersion" : 1 }, { "_id" : 2, "name" : "10.91.250.143:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 44, "optime" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "optimeDurable" : { "ts" : Timestamp(1524099055, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2018-04-19T00:50:55Z"), "optimeDurableDate" : ISODate("2018-04-19T00:50:55Z"), "lastHeartbeat" : ISODate("2018-04-19T00:50:56.060Z"), "lastHeartbeatRecv" : ISODate("2018-04-19T00:50:56.789Z"), "pingMs" : NumberLong(0), "syncingTo" : "10.91.250.141:27017", "configVersion" : 1 } ], "ok" : 1, "operationTime" : Timestamp(1524099055, 1), "$clusterTime" : { "clusterTime" : Timestamp(1524099055, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
5、验证replica sets 数据一致性
在主共同点增加一个库,新建一条数据
刷新后节点二和三数据与节点一同步。