部署集群思路:
在同一个服务器上安装三个实例,分别用端口号:27017(主)、27018(从)、27019(裁决)
1.安装mongodb
我的版本是3.2.10
2.新建目录
D:\MongoDB\instance\data1\db
D:\MongoDB\instance\data1\log
D:\MongoDB\instance\data2\db
D:\MongoDB\instance\data2\log
D:\MongoDB\instance\data3\db
D:\MongoDB\instance\data3\log
3新建配置文件
在D:\MongoDB\instance下新建mongod1.config、mongod2.config、mongod3.config
mongod1.config 配置
# 设置数据文件的存放目录
dbpath = D:\MongoDB\instance\data1\db
# 设置数据文件的存放目录
logpath = D:\MongoDB\instance\data1\log\mongod.log
# 设置端口号
port = 27017
# 绑定IP,使其可以外网访问
bind_ip = 0.0.0.0
# keyFile
# keyFile = d:\mongodb\keyFile.file
# 权限启用验证
#auth = true
# 集群名称
replSet = rs0
mongod2.config 配置
# 设置数据文件的存放目录
dbpath = D:\MongoDB\instance\data2\db
# 设置数据文件的存放目录
logpath = D:\MongoDB\instance\data2\log\mongod.log
# 设置端口号
port = 27018
# 绑定IP,使其可以外网访问
bind_ip = 0.0.0.0
# keyFile
# keyFile = d:\mongodb\keyFile.file
# 权限启用验证
#auth = true
# 集群名称
replSet = rs0
mongod3.config 配置
# 设置数据文件的存放目录
dbpath = D:\MongoDB\instance\data3\db
# 设置数据文件的存放目录
logpath = D:\MongoDB\instance\data3\log\mongod.log
# 设置端口号
port = 27019
# 绑定IP,使其可以外网访问
bind_ip = 0.0.0.0
# keyFile
# keyFile = d:\mongodb\keyFile.file
# 权限启用验证
#auth = true
# 集群名称
replSet = rs0
4.部署mongodb实例
切换到mongodb安装bin目录,执行命令
– 安装服务
mongod --config D:\MongoDB\instance\mongod1.config --serviceName "Mongodb1" --serviceDisplayName "Mongodb1" --install
– 启动服务
net start Mongodb1
依次部署和启动 第二、第三个实例
mongod --config D:\MongoDB\instance\mongod2.config --serviceName "Mongodb2" --serviceDisplayName "Mongodb2" --install
mongod --config D:\MongoDB\instance\mongod3.config --serviceName "Mongodb3" --serviceDisplayName "Mongodb3" --install
net start Mongodb2
net start Mongodb3
5.配置集群
连接上任一一台实例
mongo --host 127.0.0.1 --port 27017
use admin
//初始化集群
rs.initiate({_id:"rs0",members:[{_id:0,host:"127.0.0.1:27017"},{_id:1,host:"127.0.0.1:27018"}]});
//添加裁决
rs.addArb("127.0.0.1:27019")
至此,集群配置成功。
可以查看下集群的状态
rs.status()
6.其他命令(用不到可以不看)
#停止服务
net stop Mongodb1
#卸载服务
sc delete Mongdb1
#创建管理员
建哪个库的管理员就先 use到那个库,例如建系统最高管理员
use admin
db.createUser({user:'root',pwd:'123456', roles:[{role:'root', db:'admin'}]})
角色有:
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限
#密码认证
在哪个库建的管理员,就use到哪个库去认证,例如
use admin
db.auth("root","123456");
#追加角色配置
db.grantRolesToUser("root",[{ role: "backup", db: "admin" },{ role: "restore", db: "admin" }])
#备份
备份指定库,–authenticationDatabase admin一定要加,使用的username属于哪个库就–authenticationDatabase db
mongodump -h 127.0.0.1:27021 -u test -p 123456 -d dbtest -o D:\mongodb\bak2 --authenticationDatabase admin
#还原
mongorestore --host 127.0.0.1:27021 --db DataCenter D:\mongodb\bak\test
以上脚本都有其他写法,可以尝试,具体可以看通过 【命令 + --help】查看。
7.遗留问题
尝试用auth方式启动,linux下集群间可以通过keyFile进行验证,
但是window下不知道该怎么配置,如有大神指点,感激不尽。