docker搭建mongodb单节点副本集

2022-12-05 14:22:36 浏览数 (2)

背景

在开发中,我们很容易通过docker启动一个普通的mongodb数据库服务。但是有时候为了保持与线上环境一致,或者为了利用mongodb副本集的某些特性,我们需要在本地部署mongodb副本集。副本集往往需要启动多个mongodb服务作为副本集成员,而通常用于开发的笔记本资源比较有限。鉴于此,官方文档给了解决办法,可以直接将一个单节点mongodb服务转换为单节点副本集https://www.mongodb.com/docs/manual/tutorial/convert-standalone-to-replica-set/,本片文章的背景就是在golang中开发,操作mongo开启事务后报错:

代码语言:javascript复制
(IllegalOperation) Transaction numbers are only allowed on a replica set member or mongos

需要开启副本集才能使用事务,并且mongo版本大于4.0以上哈

操作

  1. pull mongo镜像 这边使用mongo5.0.7
代码语言:javascript复制
docker pull mongo:5.0.7
  1. 创建并启动一个mongo副本集容器
代码语言:javascript复制
docker run -d --name mongo_test -p 27017:27017 mongo:5.0.7 --replSet rs0

其中 --replSet rs0就是指明开启副本集

  1. 进入容器初始化副本集
代码语言:javascript复制
docker exec -it mongo_test bash
  1. 进入终端输入
代码语言:javascript复制
mongosh
  1. 在mongosh终端内输入
代码语言:javascript复制
rs.initiate()

,它便会自动根据默认配置生成一个副本集

  1. 检查副本集状态,使用
代码语言:javascript复制
rs.status()
  1. 大功告成!

注:一定要在终端内输入mongosh进入mongosh后 再执行rs.initiate()和rs.status()

0 人点赞