docker添加mongo4.0.3并配置复制集

1、创建docker 具体略过 自行百度

2、创建数据持久化目录文件(/data/mongo0是个例子 命名随意) 拉取mongo docker pull mongo:4.0.3

3、启动容器
docker run --name mongo0 -p 27017:27017 --restart=alway -v /data/mongo:/data/db -d mongo:4.0.3 --replSet "rs0"
--name 指定容器名称
-p 映射容器端口
-v 将服务器文件挂载到容器
-d 后台运行
--replSet "rs0" 设置集群的名称为rs0 这个名字可以随便起 但是需要保证参与集群的数据库名字一直

如果希望容器随docker启动而启动 可添加 --restart=always
如果要设置已经启动的容器可以使用一下命令
docker container update --restart=alway 容器名

4、产看mongoDB的在docker中的ip
docker inspect mongo0 | grep IPAddress
moogo0 为容器的名字

5、进入容器
docker exec -it mongo0 bash

6、登录mongoDB
执行命令
rs.initiate( {_id : "rs0",members: [{ _id: 0, host: "172.17.0.2:27017" },{ _id: 1, host: "172.17.0.3:27017" },{ _id: 2, host: "172.17.0.4:27017" }]})
可以使用 {_id:0,host:'127.0.0.1:10002',priority:1} 指定主节点

_id:复制集的名称。必须与启动 mongod 的 --replSet 一致
members:成员配置文件的列表。
members[n]._id:用来识别成员的 id 不可以重复
members[n].host:成员对应的 host:port 第四步中得到的ip

7、使用rs.status();查看集群状态

8、从库默认没有读写权限
需要进入从库的mongoDB执行rs.slaveOk();或者db.getMongo().setSlaveOk();
但是但是但是!!!
只有当次生效!只有当次生效!只有当次生效!
如果需要永久生效 可以依次执如下命令
find / -name .mongorc.js
vim /home/shengyang/.mongorc.js
添加内容
rs.slaveOk();


强制更换主节点办法
http://www.mongoing.com/docs/tutorial/force-member-to-be-primary.html

常用命令

设置从节点可用
mongo --port 27018(填写实际的从节点地址)
rs.slaveOk()

查看集群状态
mongo --port 27018
rs.status()

查看是否primary节点
mongo --port 27018
rs.isMaster()

查看集群配置
mongo --port 27018
rs.conf()

添加节点
mongo 主节点地址
rs.add({} | host地址) 例如rs.add('192.168.1.96:27017')

删除节点
mongo 主节点地址
删除前,建议先停止这个节点的服务
rs.remove(hostname) 例如rs.remove('192.168.1.96:27017')

更改集群配置
mongo 主节点地址
rs.reconfig({},{})

猜你喜欢

转载自www.cnblogs.com/phpk/p/11121412.html