docker搭建mongod副本集

本文介绍了如何使用Docker来创建并配置MongoDB的副本集,包括创建目录、生成密钥、启动三个节点的容器,以及设置副本集成员。在完成初始化后,通过验证数据同步确保副本集正常工作。此外,还提供了数据备份和恢复的方法以及创建用户的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker搭建mongod副本集

1. 创建目录
mkdir -p /apps/mongo-rs/{data01,data02,data03,key,backup}
2. 创建密钥
cd /apps/mongo-rs
openssl rand -base64 756 > key/mongo-rs.key
chmod 400 key/mongo-rs.key 
chown polkitd:input key/mongo-rs.key 

3创建mongodb三节点
docker run --name mongo-rs01 -p 20018:27017 -v /apps/mongo-rs/data01:/data/db -v /apps/mongo-rs/backup:/data/backup -v /apps/mongo-rs/key:/data/key -v /etc/localtime:/etc/localtime -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=oPhkajKP -d mongo:4.0.18 --replSet mongo-rs --auth --keyFile /data/key/mongo-rs.key --bind_ip_all

docker run --name mongo-rs02 -p 20019:27017 -v /apps/mongo-rs/data02:/data/db -v /apps/mongo-rs/backup:/data/backup -v /apps/mongo-rs/key:/data/key -v /etc/localtime:/etc/localtime -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=oPhkajKP -d mongo:4.0.18 --replSet mongo-rs --auth --keyFile /data/key/mongo-rs.key --bind_ip_all

docker run --name mongo-rs03 -p 20020:27017 -v /apps/mongo-rs/data03:/data/db -v /apps/mongo-rs/backup:/data/backup -v /apps/mongo-rs/key:/data/key -v /etc/localtime:/etc/localtime -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=oPhkajKP -d mongo:4.0.18 --replSet mongo-rs --auth --keyFile /data/key/mongo-rs.key --bind_ip_all

4 配置副本集
docker exec -it mongo-rs01 bash
mongo
use admin
db.auth("admin","xxxxx")
var config={
     _id:"mongo-rs",
     members:[
         {_id:0,host:"服务器ip:20018"},
         {_id:1,host:"服务器ip:20019"},
		 {_id:2,host:"服务器ip:20020",arbiterOnly:true}
]};
rs.initiate(config)
rs.status()

arbiterOnly:true 表示该节点为仲裁节点,只负责投票,不负责存储数据
执行rs.initiate()方法,初始化副本集,同时执行该方法的节点为主节点
rs.status()可查看副本集节点状态

5. 验证数据同步
在主节点插入数据
use test
db.test.insert({name:"mongo rs test"})

在从节点查询数据
docker exec -it mongo-rs02 bash

mongo
use admin
db.auth("admin","123456")
db.getMongo().setSlaveOk()
use test
db.test.find()

以上完成副本集的搭建

6. 附:其它操作
6.1 备份数据
docker exec -it mongo-rs01 bash
mongodump -d test-u admin -p PWD2020 --authenticationDatabase=admin -o /data/backup
1
2
6.2 恢复数据
docker exec -it mongo-rs01 bash
mongorestore -d test -u admin -p PWD2020 --authenticationDatabase=admin --dir /data/backup/test
1
2
6.3 创建用户
docker exec -it mongo-rs01 bash
mongo
use admin
db.auth("admin","PWD2020");
use test
db.createUser({ user: 'test', pwd: 'test2020', roles: [ { role: "readWrite", db: "test" } ] });



db.createUser({
    user: 'scrm',
    pwd: 'oPhkajKP',
    roles: [ { role: "readWrite", db: "workwx2" } ]
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值