Docker快速搭建MongoDB副本集

前置条件

副本集模式的优劣本文就不在介绍了,其他文章有更加详细的介绍,想了解的同学可以先行移步其他文章。

本文介绍在三台服务器上分别构建 MongoDB 并组合成副本集。

本文编写时间:2024 年 6 月 2 日

拉取 Docker 镜像

docker pull mongo

想指定版本的,直接去 docker hub 查询版本号就好了https://hub.docker.com/_/mongo

创建映射目录

mkdir /root/mongodb
mkdir /root/mongodb/db
mkdir /root/mongodb/logs
mkdir /root/mongodb/config

创建日志文件

touch /root/mongodb/logs/mongod.log

编写 MangoDB 配置文件

vim  /root/mongodb/config/mongod.conf

配置文件内容

processManagement:
   fork: false
net:
   bindIpAll: true
   port: 27017
systemLog:
   destination: file
   path: "/data/logs/mongod.log"
   logAppend: true
replication:
   oplogSizeMB: 256
   replSetName: rs
storage:
   dbPath: "/data/db/mongo"
security:
   keyFile: "/data/mongodb/keyfile"

配置文件中的内容大家可以参考配置文件选项 - MongoDB 手册 v 7 。 0

设置keyfile

仅主节点操作

openssl rand -base64 666 > /root/mongodb/keyfile
chmod 600 /root/mongodb/keyfile

将生成的文件keyfile,复制的副节点的相同位置,并且同样配置 chmod 600

(重点)配置权限

所有服务器均执行该操作!

chown 999:999 /root/mongodb/keyfile
chown 999:999 /root/mongodb/config/mongod.conf
chown 999:999 /root/mongodb/logs/mongod.log

很多文章没有chown 999:999 这一步,导致容器无法访问文件,报错 error open file bad file

启动 docker

主节点

docker run -itd --name=mongo-master -p 27001:27017 --restart=always \
-v /root/mongodb/db:/data/db/mongo \
-v /root/mongodb/logs:/data/logs \
-v /root/mongodb/config/mongod.conf:/etc/mongod.conf \
-v /root/mongodb/keyfile:/data/mongodb/keyfile \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=Password \
mongo \
--config /etc/mongod.conf \
--auth

副节点

docker run -itd --name=mongo-salve -p 27001:27017 --restart=always \
-v /root/mongodb/db:/data/db/mongo \
-v /root/mongodb/logs:/data/logs \
-v /root/mongodb/config/mongod.conf:/etc/mongod.conf \
-v /root/mongodb/keyfile:/data/mongodb/keyfile \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=Password \
mongo \
--config /etc/mongod.conf \
--auth

进入容器内部

主节点操作即可

替换成自己的 IP 地址

docker exec -it mongo-master mongosh



use admin

config = {_id:"rs", version:1, members:[{_id:0, host:"11.11.11.11:27001", priority:9}, {_id:1, host:"22.22.22.22:27001", priority:3}, {_id:2, host:"33.33.33.33:27001",priority:1}]}

db.auth("root","Password")

rs.initiate(config)

rs.status()

查看效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值