Mongo副本集配置
创建2个文件
Keyfile.key
与mongod.conf
Keyfile.key
openssl rand -base64 756 > Keyfile.key
chmod 400 Keyfile.key
- mongod.conf
net:
port: 27017 # 启动端口
bindIp: 0.0.0.0 # 允许哪些ip连接
systemLog:
logAppend: true # 重新启动日志拼接在以前的日志 不用新建
security:
keyFile: "/data/configdb/Keyfile.key" # 副本集校验
authorization: "enabled" # 开启客户端连接验证
replication:
replSetName: "rs01Set" # 副本集的名称
- 以下操作使用的是 Portainer
- docker-compose.yml
version: '2'
services:
mongo1:
container_name: mongo1
image: mongo:4.4.6
restart: always
ports:
- 37017:27017
volumes:
- /data/mongodb/mongodb_data/mongo1:/data/db
- /data/mongodb/mongodb_data/configdb:/data/configdb
- /etc/localtime:/etc/localtime
command: mongod --dbpath /data/db --config /data/configdb/mongod.conf
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 你的密码
mongo2:
container_name: mongo2
image: mongo:4.4.6
restart: always
ports:
- 37027:27017
volumes:
- /data/mongodb/mongodb_data/mongo2:/data/db
- /data/mongodb/mongodb_data/configdb:/data/configdb
- /etc/localtime:/etc/localtime
command: mongod --dbpath /data/db --config /data/configdb/mongod.conf
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 你的密码
mongo3:
container_name: mongo3
image: mongo:4.4.6
restart: always
ports:
- 37037:27017
volumes:
- /data/mongodb/mongodb_data/mongo3:/data/db
- /data/mongodb/mongodb_data/configdb:/data/configdb
- /etc/localtime:/etc/localtime
command: mongod --dbpath /data/db --config /data/configdb/mongod.conf
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 你的密码
mongo-express:
container_name: mongo-express
image: mongo-express:latest
restart: always
ports:
- 37081:8081
links:
- mongo1:mongo1
- mongo2:mongo2
- mongo3:mongo3
environment:
ME_CONFIG_MONGODB_SERVER: mongo1
ME_CONFIG_MONGODB_ADMINUSERNAME: root mongo的账户
ME_CONFIG_MONGODB_ADMINPASSWORD: 你的密码 mongo的密码
ME_CONFIG_BASICAUTH_USERNAME: root mongo-express的账户
ME_CONFIG_BASICAUTH_PASSWORD: 你的密码 mongo-express的密码
-
注意
- 上面的
MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: Hoc-7vm-Ruh-ezY
会在admin库创建root用户 但是可能不会创建 实际的mongo日志
error":"UserNotFound: Could not find user \"root\" for db \"admin\""
日志提示没有root用户 则需要创建用户 - 进入客户端 $ mongo
- 初始化副本集
rs.initiate({_id:"rs01Set", members:[{_id:0,host:"你的公网ip:37017"},{_id:1,host:"你的公网ip:37027"},{_id:2,host:"你的公网ip:37037"}]});
反馈 ok:1 - 选择库
use admin
- 创建用户
db.createUser({ user: 'root', pwd: '你的密码', roles: [ { role: "root", db: "admin" } ] })
- 上面的
初始化副本集
rs.initiate({_id:"rs01Set", members:[{_id:0,host:"你的公网ip:37017"},{_id:1,host:"你的公网ip:37027"},{_id:2,host:"你的公网ip37037"}]});
状态
rs.status()
配置
rs.config()
-
创建账户
- 选择库
use admin
- 创建账户
db.createUser({ user: 'root', pwd: '你的密码', roles: [ { role: "root", db: "admin" } ] });
- 选择库
登陆
mongo -u root -p 你的密码 --authenticationDatabase admin