部署 mongodb replica set
1. 环境
- mongodb 6.0
- docker
2. 步骤
- 创建用于副本集认证的keyfile
# 创建文件
openssl rand -base64 756 > mongodb.key
# 修改文件权限
chown 999:999 mongodb.key
chmod 400 mongodb.key
- 创建mongodb配置文件
replication:
replSetName: rs0
security:
# 先禁用认证
# authorization: enabled
keyFile: /etc/mongodb.key
net:
bindIpAll: true
# 修改文件权限
chown 999:999 mongodb.conf
chmod 400 mongodb.conf
- 部署mongodb
由于只是测试所以不映射数据库文件
docker run -d --name rs01 -p 17017:27017 -v $(pwd)/mongodb.conf:/etc/mongodb.conf -v $(pwd)/mongodb.key:/etc/mongodb.key mongo:6.0.3 --config /etc/mongodb.conf
docker run -d --name rs02 -p 27017:27017 -v $(pwd)/mongodb.conf:/etc/mongodb.conf -v $(pwd)/mongodb.key:/etc/mongodb.key mongo:6.0.3 --config /etc/mongodb.conf
docker run -d --name rs03 -p 37017:27017 -v $(pwd)/mongodb.conf:/etc/mongodb.conf -v $(pwd)/mongodb.key:/etc/mongodb.key mongo:6.0.3 --config /etc/mongodb.conf
- 初始化副本集
# 进入容器
docker exec -it rs01 /bin/bash
# 连接mongo
mongosh
# 使用admin
use admin
# 初始化集群,host建议用域名,而非ip。
rs.initiate( {
_id : "rs0",
members: [
{ _id: 0, host: "www.whyfate.com:17017" },
{ _id: 1, host: "www.whyfate.com:27017" },
{ _id: 2, host: "www.whyfate.com:37017" }
]
})
# 创建管理员
db.createUser(
{
user: "whyfate",
pwd: passwordPrompt(),
roles: [ { role: "root", db: "admin" } ]
}
)
这里偷懒用了root用户,正式环境参考mongodb角色大全。
5. 修改配置文件,启用认证,重启程序。
6. 连接字符串
mongodb://whyfate:123456@www.whyfate.com:17017,www.whyfate.com:27017,www.whyfate.com:37017/test?replicaSet=rs0&authSource=admin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-01-04 关于 keepalived+nginx 出现的问题的思考
2021-01-04 ubuntu 18.04 设置静态 ip 之 24