当前位置: 首页 > news >正文

mongodb单节点改副本集模式

前一阵将三节点的副本集改成了单节点,但后面业务代码出现问题:无法使用事务,因为事务只有在副本集上能用,单节点无法使用,故需要改回副本集模式,而我目前仅有一台服务器,所以考虑在一台服务器上通过容器部署三节点副本集

version: "3.8"
services:mongo1:image: mongo:5.0.31container_name: mongo1ports:- 27017:27017volumes:- mongo2:/data/db  # 复用你原来的数据command: ["mongod", "--replSet", "rs0", "--bind_ip_all"]mongo2:image: mongo:5.0.31container_name: mongo2ports:- 27018:27017volumes:- mongo2_data2:/data/dbcommand: ["mongod", "--replSet", "rs0", "--bind_ip_all"]mongo3:image: mongo:5.0.31container_name: mongo3ports:- 27019:27017volumes:- mongo2_data3:/data/dbcommand: ["mongod", "--replSet", "rs0", "--bind_ip_all"]volumes:mongo2:         # 原来的数据卷mongo2_data2:mongo2_data3:

这里需要注意,docker volume mongo2是保存有数据的volume,所以你需要把它指定为主节点

>>> docker exec -it mongo1 mongosh
cfg = {_id: "rs0",members: [{ _id: 0, host: "10.6.212.87:27017", priority: 2 },{ _id: 1, host: "10.6.212.87:27018", priority: 1 },{ _id: 2, host: "10.6.212.87:27019", priority: 0 }]
}
rs.reconfig(cfg, { force: true })

还有就是启动mongo时,如果加上“–auth”参数,会报如下错误

Attaching to mongo1, mongo2, mongo3
mongo2  | BadValue: security.keyFile is required when authorization is enabled with replica sets
mongo2  | try 'mongod --help' for more information
mongo1  | BadValue: security.keyFile is required when authorization is enabled with replica sets
mongo1  | try 'mongod --help' for more information
mongo3  | BadValue: security.keyFile is required when authorization is enabled with replica sets
mongo3  | try 'mongod --help' for more information
mongo2 exited with code 2
mongo1 exited with code 2
mongo3 exited with code 2

解决起来有一些麻烦,所以我就干脆把–auth参数去掉了,但会存在安全风险。
还要注意,mongodb比较吃内存,所以在单服务器上要注意内存,不然会被docker停掉。
在这里插入图片描述

http://www.lryc.cn/news/572407.html

相关文章:

  • Python 开发环境全栈隔离架构:从 Anaconda 到 PyCharm 的四级防护体系
  • NetworkManager介绍与用法
  • 【单片机】51单片机练习代码
  • GRBL_UNO R3编译下载
  • Spring Boot 虚拟线程 vs WebFlux:谁更胜一筹?
  • Spring-创建第一个SpringBoot项目
  • apisix-使用hmac-auth插件进行接口签名身份验证\apisix consumer
  • SpringBoot项目启动时自动加载数据到Redis的完整实现方案,用于存储字典,定时任务,登录用户等
  • Spring @Autowired 依赖注入全解析
  • 语音情感识别:CNN-LSTM 和注意力增强 CNN-LSTM 模型的比较分析
  • Hive优化详细讲解
  • Redis 的优势有哪些,它是CP 还是 AP?CAP 理论又是什么?
  • C#的泛型和匿名类型
  • Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器
  • Java八股文——计算机网络「传输层篇」
  • CppCon 2017 学习:Everything You Ever Wanted to Know about DLLs
  • CppCon 2017 学习:dynamic_cast from scratch
  • 【AJAX 实战】图书管理系统上 渲染图书列表+新增图书+删除图书
  • windows系统JDK1.8 与JDK 17切换
  • css3 文本效果(text-shadow、text-overflow、word-wrap、word-break)文本阴影、文本换行、文本溢出并隐藏显示省略号
  • 数据结构 6(算法)
  • CMake实践:指定gcc版本编译和交叉编译
  • 华为OD机试-最佳植树距离-二分(JAVA 2025A卷)
  • DeserializationViewer使用说明
  • Java并发编程实战 Day 29:大数据处理的并行计算模型
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • FPGA基础 -- Verilog 命名事件
  • React 19中如何向Vue那样自定义状态和方法暴露给父组件。
  • 什么是Spark
  • 服务器如何从http升级到https(nginx)