一、环境信息
测试环境
OS: CentOS 6.7
MongoDB:mongodb-linux-x86_64-3.0.5.tgz
IP地址:192.168.45.138:27017(主)
192.168.45.146:27017(从&&仲裁【27018】)
二、部署实施过程
1、分别在每台服务器中解压Mongodb包
[root@master ~]# tar -xvf mongodb-linux-x86_64-3.0.5.tgz
[root@master ~]# mv mongodb-linux-x86_64-3.0.5 /usr/local/mongodb
2、建立数据文件
[root@master ~]# mkdir -p /data/mongodb/master #主节点
[root@master ~]# mkdir -p /data/mongodb/slave #从节点
[root@master ~]# mkdir -p /data/mongodb/arbiter #仲裁节点
3、分别在服务器中建立配置文件
[root@master ~]# cd /usr/local/mongodb $$ mkdir conf && cd conf #创建配置文件目录
[root@master conf]# mkdir /data/mongodb/logs #编辑主配置文件,添加如下内容
[root@master conf]# vim /usr/local/mongodb/conf/master.conf #编辑主配置文件,添加如下内容
dbpath=/data/mongodb/master
logpath=/data/mongodb/logs/master.log
pidfilepath=/data/mongodb/master.pid
directoryperdb=true
logappend=true
replSet=ytk
port=27017
oplogSize=10000
fork=true
noprealloc=true
参数解释:
dbpath:数据存放目录
logpath:日志存放路径
pidfilepath:进程文件,方便停止mongodb
directoryperdb:为每一个数据库按照数据库名建立文件夹存放
logappend:以追加的方式记录日志
replSet:replica set的名字
bind_ip:mongodb所绑定的ip地址
port:mongodb进程所使用的端口号,默认为27017
oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
fork:以后台方式运行进程
noprealloc:不预先分配存储
Profile:开启慢查询功能
0 – 不开启
1 – 记录慢命令 (默认为>100ms)
2 – 记录所有命令
---------------------------------------------------
[root@slave ~]# tar xvf mongodb-linux-x86_64-3.0.5.tgz
[root@slave ~]# mv mongodb-linux-x86_64-3.0.5 /usr/local/mongodb
[root@slave ~]# cd /usr/local/mongodb/ && mkdir conf && cd conf
[root@slave conf]# mkdir /data/mongodb/logs
[root@slave conf]# vim /usr/local/mongodb/conf/slaver.conf #编辑从配置文件,添加如下内
dbpath=/data/mongodb/slaver
logpath=/data/mongodb/logs/slaver.log
pidfilepath=/data/mongodb/slaver.pid
directoryperdb=true
logappend=true
replSet=ytk
port=27017
oplogSize=10000
fork=true
noprealloc=true
-----------------------------------------------------
[root@slave conf]# vim /usr/local/mongodb/conf/arbiter.conf #编辑仲裁节点配置文件,添加内容
dbpath=/data/mongodb/arbiter
logpath=/data/mongodb/logs/arbiter.log
pidfilepath=/data/mongodb/arbiter.pid
directoryperdb=true
logappend=true
replSet=ytk
port=27018
oplogSize=10000
fork=true
noprealloc=true
4、分别启动MongoDB服务
启动主节点
[root@master conf]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/master.conf
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 36399
child process started successfully, parent exiting #启动成功
启动从节点
[root@slave ~]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/slaver.conf
启动仲裁节点
[root@slave ~]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/arbiter.conf
5.、配置主、备、仲裁节点
编辑用户HOME目录下的.bash_profile配置文件,添加如下内容:
[root@master ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin
export PATH
[root@master ~]# source .bash_profile #使其生效
在主节点中执行如下操作:
[root@master ~]# mongo
> use admin
> {_id:"ytk",members:}
2019-11-29T18:59:25.566+0800 E QUERY SyntaxError: Unexpected token :
> cfg={_id:"ytk",members: [ {_id:0,host:'192.168.45.138:27017',priority:2}, {_id:1,host:'192.168.45.146:27017',priority:1}, {_id:2,host:'192.168.45.146:27018',arbiterOnly:true}]};
> rs.initiate(cfg) #使其配置生效
{ "ok" : 1 } #此状态说明配置成功
ytk:PRIMARY> rs.status() #查看状态
ytk:PRIMARY> db.printReplicationInfo() #查看Replication信息
configured oplog size: 10000.003845214844MB
log length start to end: 0secs (0hrs)
oplog first event time: Fri Nov 29 2019 19:10:32 GMT+0800 (CST)
oplog last event time: Fri Nov 29 2019 19:10:32 GMT+0800 (CST)
now: Fri Nov 29 2019 19:12:24 GMT+0800 (CST)
ytk:PRIMARY> db.printSlaveReplicationInfo() #查看备节点Replication信息
source: 192.168.45.146:27017
syncedTo: Fri Nov 29 2019 18:23:00 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
到这里 MongoDB Replica Set (副本集) 部署完成