MongoDB
安装与使用
服务器命令
数据命令
复制(副本集)
备份与恢复
监控指标
MongoDB集群(docker)
本文档使用MrDoc发布
返回首页
-
+
MongoDB集群(docker)
2023年5月31日 16:44
admin
##拉取镜像 根据项目要求看是否需要特定版本,则在最后加上版本号。 docker pull mongo:4.0 --- ##(备份还原)备份原来数据库数据 #例如原数据库启动命令: docker run -e TZ=Asia/Shanghai -d --name mongodb --restart always \ -p 27017:27017 \ -v /opt/mongodb/data/configdb:/data/configdb \ -v /opt/mongodb/data/db:/data/db \ -v /opt/mongodb/backup:/data/backup \ --log-opt max-size=10m \ --log-opt max-file=1 \ mongo:4.0 --auth --- ####1.进入原mongo容器: docker exec -it mongodb bash ####2.备份原mongo库: mongodump --host 127.0.0.1 --port 27017 -u root -p db_root_password -o /data/backup --authenticationDatabase admin ####3.停掉原mongo容器(如果部署在同一台端口冲突可先停掉): docker stop mongodb ####4.拷贝备份文件(-v /opt/mongodb/backup:/data/backup):将备份文件拷贝出来备用 --- #部署副本集群 ##节点一 docker run -d --restart=always \ -p 27017:27017 \ --name mongo01 \ -v /opt/mongo/:/data/db \ mongo:4.0 \ --replSet mongoreplset --bind_ip_all ------ #注意: --bind_ip_all:允许所有ip访问 --- ##节点二 docker run -d --restart=always \ -p 27017:27017 \ --name mongo02 \ -v /opt/mongo/:/data/db \ mongo:4.0 \ --replSet mongoreplset --bind_ip_all ------ #注意: --bind_ip_all:允许所有ip访问 --- ##节点三 docker run -d --restart=always \ -p 27017:27017 \ --name mongo03 \ -v /opt/mongo/:/data/db \ mongo:4.0 \ --replSet mongoreplset --bind_ip_all ------ #注意: --bind_ip_all:允许所有ip访问 --- #配置集群 ##1. 进入master容器: docker exec -it mongo01 /bin/bash ##2. 进入mongo: mongo ##3. 配置集群:IP为部署数据库的服务器IP config = {_id:"mongoreplset", version:1, members:[{_id:0, host:"172.16.2.81:27017", priority:1}, {_id:1, host:"172.16.2.82:27017", priority:1}, {_id:2, host:"172.16.2.83:27017", arbiteronly:true}]} #arbiteronly:true 只作为仲裁节点 ##4. 初始化集群 rs.initiate(config) ##5. 新增节点 #新增从节点 rs.add( { host: "172.16.2.83:27017", priority: 1 } ) #新增仲裁节点 rs.add( { host: "172.16.2.83:27017", arbiterOnly: true } ) ##6.(备份还原)加载旧库的备份数据(如果需要,备份的数据拷贝到主机相应的挂载目录): mongorestore --host 127.0.0.1 --port 27017 /data/backup/ ##7. 退出容器: exit --- #验证 ####验证集群: #任意节点: docker exec -it mongo01 mongo --eval "rs.status()" --- ####数据验证 #主节点: use d9cloud_op; db.test.insert({testkey:"success"}) #从节点: #开启从库可读 rs.slaveOk(); use d9cloud_op; db.test.find()
分享到: