Mongodb多副本Windows10安装部署
1、下载Mongodb压缩包
上图右侧选择版本及包,点击下载按钮,下载所需介质,连接如下:
Mongodb下载官网连接
本文以压缩包形式进行安装部署。
2、创建Mongodb安装目录
在磁盘上分别创建三个Mongodb安装目录,将下载的压缩包分别解压到这三个目录,然后将解压后的目录名称修改为mongodb,在同目录下创建node目录,并在node目录下创建data目录和log目录,其中data目录用于存放数据,log目录用于存放日志文件。如下图:
其中data目录下的目录为启动Mongodb后生成的,非创建。
3、创建配置文件
分别在三副本Monodb的node目录下创建配置文件,配置项如下:
#数据库路径
dbpath=E:\mongodb\mongodb01\node\data
#日志输出文件路径
logpath=E:\mongodb\mongodb01\node\log\mongo.log
#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
#端口号 默认为27017
port=17270
#复制集名称
replSet=repl
#绑定ip,提供远程服务时需设置
#bind_ip=xxx.xxx.xxx.xx
其中dbpath、logpath、port需按照实际进行修改,本文为本地安装部署,不开启bind_ip。
4、安装Mongodb服务
以管理员运行cmd,安装mongodb服务。
mongod.exe --config "E:\mongodb\mongodb03\node\mongod_node.conf" --install --serviceName "mongodb03"
修改服务名称(serviceName)和配置文件路径,在其余两个分别执行上述命令。
5、启动Mongodb服务
使用如下命令分别启动已安装的Mongodb服务
net start mongodb01
停止Mongodb服务的命令如下:
net stop MongoDB
移除Mongodb服务的命令如下:
mongod.exe --remove --serviceName "mongodb01"
6、设置Primary节点并启动集群
选择欲成为Primary的节点,连接进入管理后台Shell,命令如下:
mongo.exe --port [端口号]
如果是设置了bindIp需加上**–host ip**参数。
连接成功后,执行如下命令:
>use admin
>rs.initiate({
_id:"repl", #副本集名称
members:[
{_id:0,host:"[node1_ip]:[port]"},
{_id:1,host:"[node2_ip]:[port]"},
{_id:2,host:"[node3_ip]:[port]"}
]
})
执行完毕后,使用如下命令验证是否成功:
rs.conf()
rs.status()
如果副本集设置成功,结果如下:
{
"_id" : "repl",
"version" : 1,
"term" : 1,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "127.0.0.1:17270",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "127.0.0.1:17271",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "127.0.0.1:17272",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("61907a65782f5292377e0b00")
}
}
创建管理员用户
>use admin
>db.createUser({user:"root",pwd:"Root1234",roles:["root","dbAdmin"]})
执行完成后,需登录至备节点查看是否完成同步。
7、mongodb中的权限
-
数据库用户角色:read、readWrite;
-
数据库管理角色:dbAdmin、dbOwner、userAdmin;
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
-
备份恢复角色:backup、restore;
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超级用户角色:root
-
内部角色:__system
这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
从mongo4.4开始,数据库工具不再是MongoDB服务器包的一部分。
需https://www.mongodb.com/try/download/database-tools下载MongoDB数据库工具