基于docker创建mongodb副本集(1主2从)
docker下创建mongodb副本集
首先先说思路:
(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
:查看所有容器(这个时候应没有数据,滑动至顶部,再次操作)
更多推荐
所有评论(0)