mongodb搭建副本集

Mongodb副本集模式搭建
本文采用三个mongodb节点进行测试,一个primary(主节点),一个secondary(从节点),一个arbiter(裁判)

目录

1 配置文件设置

2 启动实例

3 创建超级用户

4 创建业务库和相关用户

5 创建KeyFile

6 开启副本集

6.1 初始化副本集

6.2 添加从节点和裁判

6.3 查看配置结果

7 测试从库的用户账户共享

8 程序测试


1 配置文件设置


虽然有三个节点,但每个节点的配置文件内容形式基本一致,区别就是数据、日志路径和监听地址。一个最终的配置文件内容如下

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: D:\Program Files\MongoDB\Server\6.0\bin\1\data
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  D:\Program Files\MongoDB\Server\6.0\bin\1\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


#processManagement:

security:
 keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfile
 authorization: enabled

#operationProfiling:

replication:
 replSetName: rs1

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

2 启动实例


配置好各个节点的配置文件后,就可以分别启动实例,我们先把下面配置注释掉,然后只启动准备做为主节点的实例,因为要先创建
用户,创建好后再打开重启。

#security:
# keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfile
# authorization: enabled


注意:等副本集搭建好后,从节点和裁判会共用主节点创建的用户。

启动:mongod --config path/mongod1.cfg

3 创建超级用户


使用mongodb的ssh客户端(比如MongoSH或MongoDB Compass)连接启动的主实例,以Mongosh为例,命令如下:
mongosh "mongodb://ip:port"
这里不需要使用用户名和密码.
连接成功后,可以先查看数据库列表
show dbs
admin这个数据库肯定会有的,切换到admin
use admin
创建一个超级管理员用户

db.createUser({
  user: 'admin',  // 用户名
  pwd: '123456',  // 密码
  roles:[{
    role: 'root',  // 角色
    db: 'admin'  // 数据库
  }]
})

4 创建业务库和相关用户


可以使用MongoDB Compass连接到上面的主实例,连接字符串如下:
mongodb://admin:123456@ip:port
连接成功后,在Compass的DataBase选项卡下Create DataBase
然后顺带在Compass的底部,使用Mongosh,键入如下代码,创建该库的用户

db.createUser({
  user: 'program',  // 用户名
  pwd: '123456',  // 密码
  roles:[{
    role: 'dbOwner',  // 角色
    db: 'mydb'   //数据库
  }]
})

5 创建KeyFile


keyFile用于副本集节点间的验证。
使用openssl命令生成一个keyfile,并且分别关联到各个节点的配置文件,并打开验证,如下:
 

security:
 keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfile
 authorization: enabled


6 开启副本集


首先要设置副本集名字,在本质文件中添加如下配置:
replication:
 replSetName: rs1  
Name随意,但三个节点的配置文件中的这个配置必须一致。

我们还是先只操作主实例,关闭主实例,并重启(因为改了配置文件,开启了验证)
mongod --config path/mongod1.cfg

6.1 初始化副本集


使用Mongosh连接到主实例
mongosh "mongodb://ip:port"
切换到admin库
use admin
认证
db.auth('admin', '123456')
初始化
rs.initiate()


6.2 添加从节点和裁判


我们先启动从节点和裁判,启动命令同主节点:
mongod --config path/mongodXXX.cfg   //使用各自的配置文件
添加从节点:
rs.add("ip:port")  // 填入从节点ip和端口
添加裁判:
rs.addArb("ip:port") // 填入裁判ip和端口,这里用的是addArb


6.3 查看配置结果


rs.status()
理论上这时候应该看到三个节点的stateStr分别是:PRIMARY、SECONDARY和ARBITER。
如果不行,就把三个节点重启,重新通过mongosh连接主节点使用rs.status()查看,连上后要
先切换到admin库进行认证。

我的测试结果如下图:

 


7 测试从库的用户账户共享


使用mongosh连接到从库,使用db.auth()测试之前在主库上创建的账户,理论上应该返回'OK'

8 程序测试


以golang客户端为例,连接副本集的连接字符串如下:

const uri = "mongodb://program:123456@10.1.28.23:27017,10.1.28.23:27018,10.1.28.23:27019/?replicaSet=rs1&authMechanism=SCRAM-SHA-1&authSource=mydb"

连接成功后,就可以使用副本集的Watch特性以及其它常规操作。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值