配置mongodb副本集实现数据流实时获取
- 前言
- 操作步骤
- 1. docker拉取mongodb镜像
- 2. 连接mongo1镜像的mongosh
- 3. 在mongosh中初始化副本集
- 注意点
前言
由于想用nodejs实现实时获取Mongodb数据流,但是报错显示需要有副本集的mongodb才能实现实时获取信息流,因此特此进行副本集的配置。另外由于笔者使用的是Windows开发,虚拟机上面的Ubuntu20.04的apt源又被整坏了,因此只能寻求通过docker来实现副本集的部署。
操作步骤
首先默认已经安装过docker desktop,没有安装过的可以参考这篇博客
1. docker拉取mongodb镜像
!注:一定要给镜像分配数据卷,要不然就会在启动的时候启动到一半停下来中止。
首先创建一个文件名为docker-compose.yml的文件,内容如下:
version: '3.8'
services:mongo1:image: mongo:latestcontainer_name: mongo1ports:- 27017:27017volumes:- mongo1_data:/data/dbcommand: ["mongod", "--replSet", "rs0", "--bind_ip_all"]mongo2:image: mongo:latestcontainer_name: mongo2ports:- 27018:27017volumes:- mongo2_data:/data/dbcommand: ["mongod", "--replSet", "rs0", "--bind_ip_all"]mongo3:image: mongo:latestcontainer_name: mongo3ports:- 27019:27017volumes:- mongo3_data:/data/dbcommand: ["mongod", "--replSet", "rs0", "--bind_ip_all"]volumes:mongo1_data:mongo2_data:mongo3_data:
然后执行下面的命令生成镜像并启动容器:
docker-compose up -d
2. 连接mongo1镜像的mongosh
docker exec -it mongo1 mongo
3. 在mongosh中初始化副本集
在mongosh中输入如下命令:
rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo1:27017" },{ _id: 1, host: "mongo2:27017" },{ _id: 2, host: "mongo3:27017" }]}
)
输出:
连接成功以后打开Docker Desktop就能看到连接成功以后的mongodb副本集了。
用Mongo Campass连接上mongodb以后就可以看到副本集配置成功了!嘿嘿嘿
注意点
详细步骤可以借鉴这篇文章
注!:操作副本集如果想以PRIMARY模式需要在进入副本集以后再按一下回车。
另外注意在添加用户的时候要在admin用户下进行,详细步骤如下:
看到验证消息输出1证明验证成功!