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\datajournal:enabled: true
#  engine:
#  wiredTiger:# where to write logging data.
systemLog:destination: filelogAppend: truepath:  D:\Program Files\MongoDB\Server\6.0\bin\1\log\mongod.log# network interfaces
net:port: 27017bindIp: 0.0.0.0#processManagement:security:keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfileauthorization: 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.keyfileauthorization: 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特性以及其它常规操作。

mongodb搭建副本集相关推荐

  1. MongoDB 搭建副本集

    副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...

  2. SpringBoot整合MongoDB以及副本集、分片集群的搭建

    整合springboot应用 说明: 这里主要以 springboot 应用为基础应用进行整合开发. Spring Data : Spring 数据框架 JPA .Redis.Elasticsearc ...

  3. MongoDB之副本集创建

    目录 一 复制 1 复制简介 2 建立副本集 3 网络注意事项 4 安全注意事项 5 观察副本集 6 更改副本集操作 7 如何设计副本集 8 如何进行选举 9 成员变量配置 10 创建索引 二 同步 ...

  4. MongoDB之副本集

    MongoDB之副本集 一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...

  5. MongoDB配置副本集(含Arbiter)

    MongoDB配置副本集(含Arbiter) 集群模式为:一主一副一仲裁 安装依赖 yum install net-snmp lsof -yyum install net-snmp -y 配置数据节点 ...

  6. mongodb分片+副本集集群环境搭建

    1.准备工作 准备机器 端口 28000 27017 27018 27019 27020 192.168.0.1 config route shardmaster shardreplset shard ...

  7. MongoDB分片副本集搭建

    1.安装mongodb tar xvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local/ cd /usr/local mv ...

  8. mongodb系列~mongodb的副本集搭建和原理

    一 简介: mongodb副本集 二 复制方式: 1 全量复制 2 增量复制 三 同步检测过程:     一 正常情况下:        1 master执行语句,并将所有的修改数据库的操作以日志Op ...

  9. Golang + MongoDB ReplSet副本集

    本文介绍MongoDB副本集,暂且按照3个节点来配置:A(primary).B(secondary).C(arbiter) 1. 在集群每个节点上安装一份MongoDB: 2. 配置副本集: 3. 配 ...

最新文章

  1. phonegap+jquerymobile开发android的心得(6)
  2. 解析软件测试需要变革的因素
  3. Swift 开源精选-v1.0(进阶篇)
  4. python3串口通信16进制_STM32串口通信——16进制数形式
  5. 学生用计算机重启,如何使学校的电脑在重启后不自动还原系统?
  6. redis配置文件下载
  7. Google 搜索服务退出中国
  8. inurl home.php,phpweb /version.php Vul
  9. JQuery从入门到实战
  10. vuepress-theme-reco自动生成侧边栏
  11. DB2 SQL 消息
  12. 《C语言程序设计》江宝钏主编-习题8-4-复制字串!!!
  13. 【Tryhackme】Hacker of the Hill #1
  14. 计算机应用基础实训室,计算机应用基础实训
  15. 双离合档把上按钮作用_帕萨特档杆按钮作用是什么
  16. SwiftUI之NavigationView的基础使用与进阶实践
  17. Android开发之APP直播简介
  18. 视听语言-2镜头系列
  19. python求一元二次方程的解法_函数练习_《从零开始学 python》(第二版)
  20. 《从祖先到算法—加速进化的人类文化》简评

热门文章

  1. 手机tribe.html,申请国外学历、研究生、联合培养有用模板
  2. Android App 网络接入实时监控
  3. unity3d 各大插件评测
  4. ECIF系统大致框架理解,ECIF和OFSA的OFDM的框架及应用
  5. oracle讲座心得1000字,教育讲座心得体会(精选8篇)
  6. linux重启用reboot后起不来_「linux重启命令」Linux之重启reboot命令 - seo实验室
  7. rust学习(二)猜数字游戏主要语句和理解
  8. 制作LCD 的测试图片RGB666格式
  9. 2014年工作中遇到的20个问题:101-120
  10. Adobe Experience Cloud:整合三朵云 借鉴国外经验提升营销效果