MongoDB副本集配置过程

本文介绍了MongoDB副本集环境的搭建过程。首先进行环境准备,包括三台“centos 6.6 + MongoDB 3.6.1”服务器的配置。接着开启副本集功能,修改Mongod启动配置文件并重启。然后初始化副本集,最后添加用户认证,包括添加用户、创建认证文件等步骤,完成副本集环境搭建。

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

1 环境准备

基础环境: 三台:“centos 6.6 + MongoDB 3.6.1”
三台服务器IP配置:

节点IP
SERVER-1192.168.6.31
SERVER-2192.168.6.32
SERVER-3192.168.6.33

初始环境暂时不要开启MongoDB用户认证,等初始化副本集后再开启认证。
初始情况下Mongod启动配置(三个节点配置相同):

dbpath = /home/mongodb/data/db
logpath = /home/mongodb/app/mongodb-3.6/mongodb.log

port = 27017
bind_ip = 0.0.0.0

fork = true                             # run background
#nohttpinterface = true

#replSet = rs
#oplogSize = 2048                       #2G

#auth = true
#keyFile = /home/mongodb/app/mongodb-3.6/keyfile

2 开启副本集功能

在三个节点上分别执行如下操作开启副本集功能。

2.1 修改Mongod启动配置文件

1) 添加:“replSet = 自定义副本集名称

2) 添加:“oplogSize = 指定日志大小”,单位:MB
  这是一个可选项,也可以不指定。
  不指定的情况下,MongoDB会根据系统情况自己配置大小。
  Linux为磁盘剩余空间的5%

修改后的配置文件

dbpath = /home/mongodb/data/db
logpath = /home/mongodb/app/mongodb-3.6/mongodb.log

port = 27017
bind_ip = 0.0.0.0

fork = true                             # run background
#nohttpinterface = true

replSet = rs
oplogSize = 2048                        #2G

#auth = true
#keyFile = /home/mongodb/app/mongodb-3.6/keyfile

2.2 重启Mongod使配置生效

3 初始化副本集

任选一个节点登录mongodb,执行如下初始化命令

rs.initiate(
  {
     "_id" : "rs", 
     "members" : [
       {"_id" : 0, "host" : "192.168.6.31:27017"},
       {"_id" : 1, "host" : "192.168.6.32:27017"},
       {"_id" : 2, "host" : "192.168.6.33:27017"}
     ]
  }
)

“_id” : “rs”, 这个地方填写副本集名称。
执行结果显示初始化成功:
在这里插入图片描述
至此,一个基本的副本集环境就已搭建完成。

4 添加用户认证

上文执行初始化成功后,副本集就已搭建完成。
但是,真正的生产环境,还要添加用户认证才行,具体过程如下:
1) 在主节点上添加"用户管理员"和"数据库管理员"用户

use admin

db.createUser(
  {
    user: "useradmin",
    pwd: "useradmin",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

db.createUser(
  {
    user: "dbadmin",
    pwd: "dbadmin",
    roles: [ 
      { role : "dbAdminAnyDatabase", db : "admin"},
      { role : "readWriteAnyDatabase", db : "admin"},
      { role : "clusterAdmin", db : "admin"} 
    ]
  }
)

2) 创建副本集认证文件:“keyFile”

  单节点认证是不需要"keyFile"文件的,
  但是副本集(replica set)或分片集群(sharded cluster)要开启认证的话,就必须指定"keyFile"。
  所有节点必须使用同一份"keyFile",因而需要在一个节点生成”keyFile“文件,再拷贝到其它节点。
  "keyFile"文件通过"openssl"工具生成;且文件生成后,必须将属性改为:“600”

openssl rand -base64 90 -out ./keyfile
chmod 600 keyfile

将生成的keyfile文件拷贝到其它节点。

3) 修改每个节点的mongod启动配置文件,增加以下两个配置项,启用认证

auth = true
keyFile = /home/mongodb/app/mongodb-3.6/keyfile

重启mongod生效

4) 验证用户登录
  连接单节点:

mongo 192.168.6.32/admin -u dbadmin -p
MongoDB shell version v3.6.11
Enter password: 
connecting to: mongodb://192.168.6.32:27017/admin?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c231555e-783c-41db-bad3-d328d0be9bfe") }
MongoDB server version: 3.6.11
rs:PRIMARY> 

  连接副本集(无论节点怎么切换,总能连接到主节点)

mongo --host rs/192.168.6.31:27017,192.168.6.32:27017,192.168.6.33:27017 admin -u dbadmin -p dbadmin

  连接测试成功!

至此,mongodb副本集环境搭建完成。

附:最终的mongod.conf配置

dbpath = /home/mongodb/data/db 
logpath = /home/mongodb/app/mongodb-3.6/mongodb.log 

port = 27017
bind_ip = 0.0.0.0

fork = true                             # run background
#nohttpinterface = true

replSet = rs
oplogSize = 2048                        #2G

auth = true
keyFile = /home/mongodb/app/mongodb-3.6/keyfile

补充:
1) secondary节点默认不可读,可通过如下命令使其可读,方便维护

SECONDARY> rs.slaveOk()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duanbeibei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值