版本:mongo-enterprise-rhel70-5.0.0.tgz
结构:
ip及端口:
primary:127.0.0.1:27017
secondary:127.0.0.1:27018
arbiter:127.0.0.1:27019
创建目录:
mkdir primary/{dbs,logs,conf,pid}
mkdir secondary/{dbs,logs,conf,pid}
mkdir arbiter/{dbs,logs,conf,pid}
keyFile生成:(开启认证需要auth = true)
openssl rand -base64 765 > /data/mongodb/primary/data/mongo.key
chown mongodb.mongodb /data/mongodb/primary/data/mongo.key
chmod 600 /data/mongodb/primary/data/mongo.key
#复制到其他节点
cp /data/mongodb/primary/data/mongo.key /data/mongodb/secondary/data/mongo.key
cp /data/mongodb/primary/data/mongo.key /data/mongodb//data/mongo.key
配置文件:/data/mongodb/primary/conf/mongo.conf
dbpath=/data/mongodb/primary/data
logpath=/data/mongodb/primary/logs/mongodb.log
pidfilepath = /data/mongodb/primary/pid/mongodb.pid
port=27117
auth = true
directoryperdb = true
logappend=true
fork=true
journal = true
bind_ip = 0.0.0.0
replSet=fff
keyFile=/data/mongodb/primary/data/mongo.key
启动各mongo节点
mongod -f /data/mongodb/primary/conf/mongo.conf
mongod -f /data/mongodb/secondary/conf/mongo.conf
mongod -f /data/mongodb/arbiter/conf/mongo.conf
登录节点
mongo --port=27017
初始化副本:
use admin
#创建用户
createUser({
user:'root',pwd:'123456',roles:[{role:'root',db:'admin'}]
})
#认证登录
db.auth('root','123456')
#配置conf
conf_fff={
_id:"fff",members:[
{ _id: 0, host: "127.0.0.1:27017"},
{ _id: 1, host: "127.0.0.1:27018"},
{ _id: 2, host: "127.0.0.1:27019",arbiterOnly:true}
]}
#初始化
rs.initiate(conf_fff)
#查看状态
rs.status()
验证:
#主库插入数据
mongo --port=27017
use admin
db.auth('root','123456')
use test
db.testtable.insert({"name":"zhangsan"})
#查看数据
db.testtable.find()
secondary节点验证数据:
mongo --port=27018
use admin
db.auth('root','123456')
use test
#需要先授权要不报错
rs.secondaryOk()
#查询数据
db.testtable.find()
手动添加、移除新增节点:
#登录primary
use admin
db.auth('root','123456')
rs.add({'127.0.0.1:27020'})
rs.remove({'127.0.0.1:27020'})