Mongobd Replica Set(副本集) 集群搭建
1. 建立数据文件夹
在mongodb64(mongo解压出来的文件,本人自己命名为mongodb64)解目录外建立一个文件夹,装载配置文件,如图,红色框部分。Mongodb文件夹中分别建立master,slave,arbiter三个文件夹(注意:主服务器就建立master文件夹,依次类推)
2、建立配置文件:
(mongodb_master.conf、mongodb_slave.conf、mongodb_arbiter.conf)
#master.conf 主节点 配置
dbpath=/data/local/mongodb/master #数据路径(对应自己的服务器路径即可)
logpath=/data/local/mongodb/logs/master.log #日志路径(对应自己的服务器的路径即可)
pidfilepath=/data/local/mongodb/master.pid(对应自己的服务器的路径即可)
#keyFile=/data/local/mongodb/mongodb.key (对应自己的服务器的路径即可)
directoryperdb=true
logappend=true
replSet=wjpet
bind_ip=主服务器ip (建议使用公网ip)
port=27017 #端口
#auth=true #用户安全验证,true为需要验证
oplogSize=100
fork=true
noprealloc=true
maxConns=5000
#slave.conf 备节点 配置
dbpath=/data/local/mongodb/slave
logpath=/data/local/mongodb/logs/slave.log
pidfilepath=/data/local/mongodb/slave.pid
#keyFile=/data/local/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=wjpet
bind_ip=备用节点的ip (建议使用公网ip)
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
maxConns=5000
#arbiter.conf 仲裁节点 配置
dbpath=/data/local/mongodb/arbiter
logpath=/data/local/mongodb/logs/arbiter.log
pidfilepath=/data/local/mongodb/arbiter.pid
#keyFile=/data/local/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=wjpet
bind_ip=仲裁节点的ip (建议使用公网ip)
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
maxConns=5000
以上为主节点,备用节点、仲裁节点的配置文件,分别对应自己服务器的即可。
参数解释:
dbpath:数据存放目录
logpath:日志存放路径
pidfilepath:进程文件,方便停止mongodb
directoryperdb:为每一个数据库按照数据库名建立文件夹存放
logappend:以追加的方式记录日志
replSet:replica set的名字
bind_ip:mongodb所绑定的ip地址
port:mongodb进程所使用的端口号,默认为27017
oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
fork:以后台方式运行进程
noprealloc:不预先分配存储
3.启动mongodb
进入每个mongodb节点的bin目录下(通过conf配置文件启动mongo,etc目录下必须找出该文件,如果没有,把文件复制到etc文件夹下)
如:
./monood -f /etc/mongodb_master.conf
./monood -f /etc/ mongodb_slave.conf
./monood -f /etc/mongodb_arbiter.conf
4.配置主,备,仲裁节点(启动完mongo之后,配置)
可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb。
如:(进入主服务器bin目录下)
./mongo 10.117.202.195:27017 #ip和port是某个节点的地址
use admin #进入admin目录
cfg={_id:"test",members:[{_id:0,host:'10.117.202.195:27017',priority:2},
{_id:1,host:'10.161.230.244:27017',priority:1},
{_id:2,host:'10.161.191.53:27017',arbiterOnly:true}]
};
rs.initiate(cfg) #初始化,使cfg配置生效
注意: cfg是可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的10.117.202.195:27017。特别注意的是,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。
看到如下信息,说明配置成功
也可以最后通过命令:rs.status() 可以查看副本集的状态
4、看到如下信息,说明配置成功
如:
也可以最后通过命令:rs.status() 可以查看副本集的状态