MongoDB Replica Set 单节点部署
在某贴情况下需要使用复制集,但是不想使用多个Node,可以使用如下部署方式。
配置
使用docker-compose部署,简单方便。
以下是docker-compose.yaml配置,
version: "3"
services:
main:
image: mongo:4.4
environment:
MONGO_INITDB_ROOT_USERNAME: [Your Username]
MONGO_INITDB_ROOT_PASSWORD: [Your Password]
ports:
- 27017:27017
# 可选的数据挂载
volumes:
- /data/mongo/db:/data/db
restart: always
entrypoint: [ "/usr/bin/mongod", "--auth","--bind_ip_all", "--replSet", "rs0" ]
需要注意的点:
--auth开启认证,否则数据库裸奔--bind_ip_all允许访问的IP,全部或指定IP--bind-iprs0为复制集名称,连接时可能会用上
使用docker-compose -f [Your 'docker-comse.yaml' path] up -d
启动后进入mongo shell,然后执行初始化集群,初始化完成后查看集群状态,如果初始化时填错配置,可重新初始化集群
数据库验证
use admin;
db.auth('Username','Password')
初始化集群
注意host为本机地址
rs.initiate({
_id: "rs0",
version: 1,
members: [
{ _id: 0, host : "127.0.01:27017" }
]
}
)
查看集群状态
rs.status()
重新初始化
# 在mongo shell 里,逐行执行以下命令
rsconf = rs.conf();
rsconf.members = [{_id: 0, host: "localhost:27017"}];
rs.reconfig(rsconf, {force: true});