首先先说思路:
(1)创建副本集比不创建副本集的monggodb肯定是需要点什么设置,但是不创建副本集的mongodb是怎么做的,我们是基于docker,所以需要将主机的文件路径映射到docker上,然后再创建monggodb容器,添加某些设置,添加为副本集
(2)因为是1主2从,副本集的概念其实就是设置一个主节点,主节点在进行数据操作的时候,从节点可以进行拉取数据,主节点失效时,从节点会选举出优先级高的节点为主节点,当然不失效也可以更换主节点,这里不细说,可以去看官网,下面介绍流程

1、拉取mongodb镜像docker pull mongo
可用docker images查看镜像是否拉取成功

2、创建文件夹,三个节点,三个文件夹,用mkdir
在这里插入图片描述
3、查看docker的网络名称 docker network ls
在这里插入图片描述
这是docker安装后会自带的网络,创建副本集肯定需要指定不同非ip,由这里的网络分配ip地址给副本集

4、创建mongodb容器
docker run -p 27017:27017 --name mongodbMaster --network mongodbnet -v /root/data/db:/data/db -d mongo --replSet rs
-p 主机端口号:docker端口号
–name mongodb名称
–network 网络名称(第三步骤的网络名称,三选1)
-v 主机路径:docker路径
–replSet rs(集群名称,1主2从便是一个集群)
在这里插入图片描述

5、查看是否创建成功,其实创建的时候就有显示,查看所有容器docker ps -a
在这里插入图片描述
6、查看容器ip(后面添加从节点要用)
docker inspect 容器ID | grep IPAddress,容器ID使用前四个字符即可
在这里插入图片描述
7、进入容器,进入你想创建为主节点的容器,这里咱们是mongodbMaster
docker exec -it mongodbMaster mongo --host 172.17.0.2 --port 27017
后面的ip和端口可不加,一般不出问题
这句命令是进入mongodb容器,看到Welcome就没啥问题
在这里插入图片描述

8、添加从节点并初始化
rs.initiate(),这是初始化,直接初始化可以直接将当前节点变为主节点,然后可以在通过rs.add()添加,但是要注意,添加成功后,查看时会看到展示的是一个数组,数组中是一个节点一个集合,集合中有元素,元素有_id,这个_id的值必须是顺序下来,且主节点应该是0,是不是必须并不清楚。
这里展示我的,直接在方法中添加,也是官网的一种方法,这种不容易出错

rs.initiate(
... {
...     _id:"集群名称",
...     version:1,
...     members:[
...        {_id:0,host:"主节点IP:27017"},
...        {_id:1,host:"从节点IP:27017"},
...        {_id:2,host:"从节点IP:27017"}
...     ]
... }
)
/*27017:前面主机映射到docker都是27017,所以这里都是27017*/

在这里插入图片描述
看到"ok":1为成功,0为失败,如果你为0,看看上面有无操作出错
在这里插入图片描述
十秒左右,按回车,可看到变为主节点
在这里插入图片描述
9、查看状态rs.status()
在这里插入图片描述
在这里插入图片描述
10、开启多个连接你ip的窗口,进入两个从节点
在这里插入图片描述

最后如果你操作出错,发现结果不一样,赠与你几条命令
rs.isMaster():查看是否为主、从节点
docker containter ls:正在运行容器
docker stop 容器名称:停止运行所有容器
docker rm $(docker ps -a -q):删除所有容器
docker ps -a :查看所有容器(这个时候应没有数据,滑动至顶部,再次操作)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐