外观
Mongo
约 755 字大约 3 分钟
2025-02-20
Centos7.9 docker-compose安装mongo-replset集群
安装并启动docker
curl -sSL curl -fsSL https://get.docker.com | sh
systemctl start docker
安装docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
注
以下操作master执行
下载yaml文件
wget https://www.ikun.blog/downloads/mongo/mongo-master.yaml --no-check-certificate
创建文件夹并给予权限
mkdir -p /downloads/mongo/arbiter/
mkdir /downloads/mongo/master/
chmod 777 -R /downloads/mongo/arbiter/
chmod 777 -R /downloads/mongo/master/
docker-compose创建容器
docker-compose -f mongo-master.yaml up -d
注
以下操作在slave1节点操作
下载yaml文件
wget https://www.ikun.blog/downloads/mongo/mongo-slave-1.yaml --no-check-certificate
创建文件夹并给予权限
mkdir -p /downloads/mongo/arbiter/
mkdir /downloads/mongo/secondary/
chmod 777 -R /downloads/mongo/arbiter/
chmod 777 -R /downloads/mongo/secondary/
docker-compose创建容器
docker-compose -f mongo-slave-1.yaml up -d
注
以下操作在slave2节点操作
下载yaml文件
wget https://www.ikun.blog/downloads/mongo/mongo-slave-2.yaml --no-check-certificate
创建文件夹并给予权限
mkdir -p /downloads/mongo/arbiter/
mkdir /downloads/mongo/secondary/
chmod 777 -R /downloads/mongo/arbiter/
chmod 777 -R /downloads/mongo/secondary/
docker-compose创建容器
docker-compose -f mongo-slave-2.yaml up -d
注
进入主节点执行操作
docker exec -it mongo-master /bin/bash
初始化mongo-replset
rs.initiate({ _id:"ChairSet", members:[{_id:0,host:"192.168.6.96:27017"},{_id:1,host:"192.168.6.168:27017"},{_id:2,host:"192.168.7.11:27017"}]})
进入mongo admin库创建user
mongo
> use admin
> db.createUser({user: "root",pwd: "xxx",roles: [ { role: "root", db: "admin" } ]})
> db.createUser({user: "admin",pwd: "xxx",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
切换到xxx库创建user
> use xxx
> db.createUser({user: "xxx",pwd: "xxx",roles: [ { role: "readWrite", db: "touty" }]})
在xxx库测试用户
相关信息
返回1代表成功
> use xxx
> db.auth("xxx","xxxxxx")
创建key文件
openssl rand -base64 756 > mongo.key
chmod 600 mongo.key
注
把这个key文件放到另外两台服务器上
修改compose文件
vim mongo-master.yaml
mongo-master:
image: docker.touty.io/library/mongo:latest
container_name: mongo-master
restart: always
ports:
- 27017:27017
volumes:
- /downloads/mongo/master/:/downloads/db/
- /opt/mongo/dumpdb/:/opt/mongo/dumpdb/
command: mongod --dbpath /downloads/db --replSet ChairSet --oplogSize 128 --keyFile /downloads/db/mongo.key
mongo-arbiter:
image: docker.touty.io/library/mongo:latest
container_name: mongo-arbiter
restart: always
ports:
- 27018:27017
volumes:
- /downloads/mongo/arbiter/:/downloads/db/
- /opt/mongo/dumpdb/:/opt/mongo/dumpdb/
command: mongod --dbpath /downloads/db --replSet ChairSet --oplogSize 128 --keyFile downloads/db/mongo.key
vim mongo-slave-1.yaml
mongo-master:
image: docker.touty.io/library/mongo:latest
container_name: mongo-slave1
restart: always
ports:
- 27017:27017
volumes:
- /downloads/mongo/master/:/downloads/db/
- /opt/mongo/dumpdb/:/opt/mongo/dumpdb/
command: mongod --dbpath /downloads/db --replSet ChairSet --oplogSize 128 --keyFile /downloads/db/mongo.key
mongo-arbiter:
image: docker.touty.io/library/mongo:latest
container_name: mongo-arbiter
restart: always
ports:
- 27018:27017
volumes:
- /downloads/mongo/arbiter/:/downloads/db/
- /opt/mongo/dumpdb/:/opt/mongo/dumpdb/
command: mongod --dbpath /downloads/db --replSet ChairSet --oplogSize 128 --keyFile downloads/db/mongo.key
vim mongo-slave-2.yaml
mongo-slave-2:
image: docker.touty.io/library/mongo:latest
container_name: mongo-slave2
restart: always
ports:
- 27017:27017
volumes:
- /downloads/mongo/master/:/downloads/db/
- /opt/mongo/dumpdb/:/opt/mongo/dumpdb/
command: mongod --dbpath /downloads/db --replSet ChairSet --oplogSize 128 --keyFile /downloads/db/mongo.key
mongo-arbiter:
image: docker.touty.io/library/mongo:latest
container_name: mongo-arbiter
restart: always
ports:
- 27018:27017
volumes:
- /downloads/mongo/arbiter/:/downloads/db/
- /opt/mongo/dumpdb/:/opt/mongo/dumpdb/
command: mongod --dbpath /downloads/db --replSet ChairSet --oplogSize 128 --keyFile downloads/db/mongo.key
docker-compose重新创建容器
Master:
docker-compose -f mongo-master.yaml up -d
Slave-1:
docker-compose -f mongo-slave-1.yaml up -d
Slave-2:
docker-compose -f mongo-slave-2.yaml up -d
使用mongodump备份库
直接执行命令
mongodump -h 127.0.0.1 --port 27017 -u xxx -p xxxx --authenticationDatabase xxx -d xxx -o /opt/mongo/dumpdb/
提示
-h:指定Mongo地址 --port:指定端口号 -u:指定库用户名 -p:指定库密码 --authenticationDatabase:指定验证库 -d:指定库 -o:指定文件输出位置
使用文件恢复
mongorestore -h xxx -u xxx -p xxx --port xxx --authenticationDatabase xxx -d xxx /opt/mongo/dumpdb/xxx/
Mongo3.x常用命令
切换数据库
use xxx;
User认证
db.auth("username","password")
查看所有索引
db.getCollectionNames().forEach(function(collection){ indexes = db[collection].getIndexes(); print("Indexes for " + collection + ":" ); printjson(indexes); });