配置mongodb副本集实现数据流实时获取
前言
由于想用nodejs实现实时获取Mongodb数据流,但是报错显示需要有副本集的mongodb才能实现实时获取信息流,因此特此进行副本集的配置。另外由于笔者使用的是Windows开发,虚拟机上面的Ubuntu20.04的apt源又被整坏了,因此只能寻求通过docker来实现副本集的部署。
操作步骤
首先默认已经安装过docker desktop,没有安装过的可以参考这篇博客
1. docker拉取mongodb镜像
!注:一定要给镜像分配数据卷,要不然就会在启动的时候启动到一半停下来中止。
首先创建一个文件名为docker-compose.yml的文件,内容如下:
version: '3.8'
services:
mongo1:
image: mongo:latest
container_name: mongo1
ports:
- 27017:27017
volumes:
- mongo1_data:/data/db
command: ["mongod", "--replSet", "rs0", "--bind_ip_all"]
mongo2:
image: mongo:latest
container_name: mongo2
ports:
- 27018:27017
volumes:
- mongo2_data:/data/db
command: ["mongod", "--replSet", "rs0", "--bind_ip_all"]
mongo3:
image: mongo:latest
container_name: mongo3
ports:
- 27019:27017
volumes:
- mongo3_data:/data/db
command: ["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证明验证成功!