Mongodb 3.x 多副本集群配置

本文详细介绍了MongoDB 3.x版本的多副本集群配置过程,包括基本概念、集群搭建步骤,如配置HostName、设置配置文件、创建keyFile、创建用户及权限,并提供了详细的步骤指南,确保集群的正常运行和故障转移能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1主2从的模式在数据量不大的情况下完全能满足生产要求,所以考虑生产上使用mongodb首先应该是搭建3副本的集群。

1. Mongodb多副本集群基本概念

Mongodb在多副本集群(Replic set)中,提供了自动Failover机制。Replic set会自动选举一个可写的PRIMARY(Master),其他机器为SECONDARY(Slave)。如果PRIMARY不能提供服务时,会重新选举。具体原理


2. 集群搭建步骤

1)为每台机器配置HostName

假设mongo集群搭建在如下3台机器上
172.16.48.101
172.16.48.102
172.16.48.103

在/etc/hosts 文件中追加:
172.16.48.101 mongdb1.app.company
172.16.48.102 mongdb2.app.company
172.16.48.103 mongdb3.app.company


2)配置文件
port=27017
logpath=/mongodb/mongodb.log
logappend=true
dbpath=/mongodb/data
fork=true
replSet=rs0
#auth = true
keyFile=/mongodb/etc/mongo.pass

以上配置分发到3台服务器上。
replSet:集群名字
keyFile:集群间通讯密码文件,3台机器使用同样的文件


3)创建keyFile
openssl rand -base64 521 > /mongod/etc/mongo.pass
chmod 600 /mongod/etc/mongo.pass

将mongo.pass文件同步到3台机器/mongod/etc目录下。


4)创建用户及权限
step1. 选择一台机器(以101为例),修改配置文件,去掉集群相关的配置后启动mongod
port=27017
logpath=/mongodb/mongodb.log
logappend=true
dbpath=/mongodb/data
#fork=true
#replSet=rs0
#auth = true
#keyFile=/mongodb/etc/mongo.pass


step2. 使用mongo客户端连接服务器后,创建admin账户,并给予userAdminAnyDatabase + clusterAdmin角色
use admin
db.createUser({
    user: 'admin',
    pwd: 'admin',
    roles: [{
        role: 'userAdminAnyDatabase',
        db: 'admin'
    },
    {
        role: 'clusterAdmin',
        db: 'admin'
    }]
})


step3. 修改101机器的配置文件后重启mongod

修改后配置文件如下

port=27017
logpath=/mongodb/mongodb.log
logappend=true
dbpath=/mongodb/data
fork=true
replSet=rs0
auth = true
keyFile=/mongodb/etc/mongo.pass

ps. 关闭mongod的方法

#操作系统kill命令 
kill `ps -ef | grep mongo | grep -v grep | awk '{print $2}'`

#客户端方式
use admin
db.shutdownServer()


step4. 启动并配置集群

启动102,103后,使用mongo客户端连接101,并构建集群

use admin
db.auth('admin','admin')        #使用admin登录
rs.initiate()                   #初始化集群
rs.add("mongdb2.app.company")   #添加集群成员,使用hostname
rs.add("mongdb3.app.company")   


step5. 验证集群

分别登录101,102,103,可以看到
101 rs0:PRIMARY>
102 rs0:SECONDARY>
103 rs0:SECONDARY>
则说明集群已经搭建完毕,主从状态已经确定。


step6. 设置从库可读

默认SECONDARY是不可读的,在从库上执行如下命令

use admin
db.auth('admin','admin')
db.getMongo().setSlaveOk()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值