文章目录
1.Linux下docker启动mongodb副本集
1.1拉取mongodb镜像
1.2创建集群成员数据挂载目录
1.3安装容器
1.4配置集群关系
1.4.1进入容器内部
1.4.2连接mongodb
1.4.3配置集群关系
1.4.4查看集群状态
1.4.5添加超级管理员账号
1.4.6添加指定数据库管理员账号
1.5开启用户名密码认证
1.5.1生成keyfile文件(用于副本集群成员之间的安全验证)
1.5.2运行容器并开启认证
2.Windows下配置mongodb副本集
2.1下载安装包
2.2为副本集每个成员创建必要的数据目录
2.3创建成员实例
2.4配置集群关系
2.4.1进入一个成员实例
2.4.2配置集群关系
2.4.3查看集群状态
2.4.4添加超级管理员账号
2.4.5添加指定数据库管理员账号
2.5开启用户名密码认证
2.5.1生成keyfile文件(用于副本集群成员之间的安全验证)
2.5.2创建服务,开启用户认证
1.Linux下docker启动mongodb副本集
1.1拉取mongodb镜像
1.2创建集群成员数据挂载目录
/data/mongo /data/mongo2 /data/mongo3 /data/mongo4
1.3安装容器
mongodb的镜像名称为mongo,副本集名称为rs,执行命令:
docker run --name mongodb -p 27017:27017 -v /data/mongo/:/data/db/ -d mongo mongod --replSet rs
docker run --name mongodb2 -p 27018:27017 -v /data/mongo2/:/data/db/ -d mongo mongod --replSet rs
docker run --name mongodb3 -p 27019:27017 -v /data/mongo3/:/data/db/ -d mongo mongod --replSet rs
docker run --name mongodb4 -p 27020:27017 -v /data/mongo4/:/data/db/ -d mongo mongod --replSet rs
1.4配置集群关系
1.4.1进入容器内部
执行命令进入到mongodb的容器内部:
docker exec -it mongodb /bin/bash
1.4.2连接mongodb
执行命令连接mongodb:
mongo
1.4.3配置集群关系
执行命令:
config={
"_id":"rs",
"members":[
{"_id":0,"host":"127.0.0.1:27017","priority":10},
{"_id":1,"host":"127.0.0.1:27018","priority":9},
{"_id":2,"host":"127.0.0.1:27019","priority":8},
{"_id":3,"host":"127.0.0.1:27020","priority":0,arbiterOnly:true}
]
}
rs.initiate(config)
备注:priority为节点的权重(用于选举), arbiterOnly:true表示为仲裁节点不参与选举
1.4.4查看集群状态
rs.status()
1.4.5添加超级管理员账号
use admin
db.createUser({
user:"admin",
pwd:"123456",
roles:[
{role:"root",db:"admin"}, {role:"userAdminAnyDatabase",db:"admin"},
{role:"dbOwner", db: "admin"},{role:"clusterAdmin",db: "admin" },
{role:"userAdminAnyDatabase",db: "admin"},{role:"dbAdminAnyDatabase",db: "admin"}
]
})
1.4.6添加指定数据库管理员账号
该指定数据库的名称为dbname
use dbname
db.createUser({
user:"root",
pwd:"123456",
roles:[
{role:"readWrite",db:"dbname"}, {role: "dbAdmin", db: "dbname"},
{role:"dbOwner",db: "dbname" },{role: "read",db: "dbname" }
]
})
1.5开启用户名密码认证
1.5.1生成keyfile文件(用于副本集群成员之间的安全验证)
将key文件放到集群中的每个成员中,记住必须保持一致,权限设置成600;
openssl rand -base64 745 > ./mongo-keyfile
cp mongo-keyfile /data/mongo/ mongo-keyfile
chmod 600 /data/mongo/ mongo-keyfile
cp mongo-keyfile /data/mongo2/ mongo-keyfile
chmod 600 /data/mongo2/ mongo-keyfile
cp mongo-keyfile /data/mongo3/ mongo-keyfile
chmod 600 /data/mongo3/ mongo-keyfile
cp mongo-keyfile /data/mongo4/ mongo-keyfile
chmod 600 /data/mongo4/ mongo-keyfile
注意:该keyfile文件的权限必须为600
1.5.2运行容器并开启认证
原容器未启用安全认证,直接删除后创建新容器
docker rm mongodb
docker rm mongodb2
docker rm mongodb3
docker rm mongodb4
重新创建容器并启动
docker run --name mongodb -p 27017:27017 -v /data/mongo/:/data/db/ -d mongo mongod --replSet rs --auth --keyFile /data/db/mongo-keyfile --restart=always
docker run --name mongodb2 -p 27018:27017 -v /data/mongo2/:/data/db/ -d mongo mongod --replSet rs --auth --keyFile /data/db/mongo-keyfile --restart=always
docker run --name mongodb3 -p 27019:27017 -v /data/mongo3/:/data/db/ -d mongo mongod --replSet rs --auth --keyFile /data/db/mongo-keyfile --restart=always
docker run --name mongodb4 -p 27020:27017 -v /data/mongo4/:/data/db/ -d mongo mongod --replSet rs --auth --keyFile /data/db/mongo-keyfile --restart=always
2.Windows下配置mongodb副本集
2.1下载安装包
选择项目需要的版本,下载MongoDB安装包。
官网链接:https://www.mongodb.com/download-center/community
2.2为副本集每个成员创建必要的数据目录
E:\mongodb\mongo
E:\mongodb\mongo2
E:\mongodb\mongo3
E:\mongodb\mongo4
2.3创建成员实例
进入安装包bin目录,副本集名称为rs,
第一个成员,打开一个命令行窗口,不要关闭窗口
mongod --replSet rs --port 27017 --dbpath E:\mongodb\mongo
第二个成员,重新打开一个命令行窗口,不要关闭窗口
mongod --replSet rs --port 27018 --dbpath E:\mongodb\mongo2
第三个成员,重新打开一个命令行窗口,不要关闭窗口
mongod --replSet rs --port 27019 --dbpath E:\mongodb\mongo3
第四个成员,重新打开一个命令行窗口,不要关闭窗口
mongod --replSet rs --port 27020 --dbpath E:\mongodb\mongo4
2.4配置集群关系
2.4.1进入一个成员实例
在安装包bin目录执行命令:
mongo –port 27017
2.4.2配置集群关系
config={
"_id":"rs",
"members":[
{"_id":0,"host":"127.0.0.1:27017","priority":10},
{"_id":1,"host":"127.0.0.1:27018","priority":9},
{"_id":2,"host":"127.0.0.1:27019","priority":8},
{"_id":3,"host":"127.0.0.1:27020","priority":0,arbiterOnly:true}
]
}
rs.initiate(config)
备注:priority为节点的权重(用于选举), arbiterOnly:true表示为仲裁节点不参与选举
2.4.3查看集群状态
rs.status()
2.4.4添加超级管理员账号
use admin
db.createUser({
user:"admin",
pwd:"123456",
roles:[
{role:"root",db:"admin"}, {role:"userAdminAnyDatabase",db:"admin"},
{role:"dbOwner", db: "admin"},{role:"clusterAdmin",db: "admin" },
{role:"userAdminAnyDatabase",db: "admin"},{role:"dbAdminAnyDatabase",db: "admin"}
]
})
2.4.5添加指定数据库管理员账号
该指定数据库的名称为dbname
use dbname
db.createUser({
user:"root",
pwd:"123456",
roles:[
{role:"readWrite",db:"dbname"}, {role: "dbAdmin", db: "dbname"},
{role:"dbOwner",db: "dbname" },{role: "read",db: "dbname" }
]
})
2.5开启用户名密码认证
2.5.1生成keyfile文件(用于副本集群成员之间的安全验证)
生成key文件放到集群中的每个成员中,记住必须保持一致;
E:\mongodb\mongo\mongo-keyfile
E:\mongodb\mongo2\mongo-keyfile
E:\mongodb\mongo3\mongo-keyfile
E:\mongodb\mongo4\mongo-keyfile
2.5.2创建服务,开启用户认证
2.5.2.1用sc命令创建服务
sc create mongo binpath= "C:\mongodb-win32-x86_64-windows-4.4.1\bin\mongod.exe --replSet rs --port 27017 --dbpath E:\mongodb\mongo --auth --keyFile E:\mongodb\mongo\mongo-keyfile --service "
sc create mongo2 binpath= "C:\mongodb-win32-x86_64-windows-4.4.1\bin\mongod.exe --replSet rs --port 27018 --dbpath E:\mongodb\mongo2 --auth --keyFile E:\mongodb\mongo2\mongo-keyfile --service"
sc create mongo3 binpath= "C:\mongodb-win32-x86_64-windows-4.4.1\bin\mongod.exe --replSet rs --port 27019 --dbpath E:\mongodb\mongo3 --auth --keyFile E:\mongodb\mongo3\mongo-keyfile --service"
sc create mongo4 binpath= "C:\mongodb-win32-x86_64-windows-4.4.1\bin\mongod.exe --replSet rs --port 27020 --dbpath E:\mongodb\mongo4 --auth --keyFile E:\mongodb\mongo4\mongo-keyfile --service"
2.5.2.2开启服务
net start mongo
net start mongo2
net start mongo3
net start mongo4