环境准备
本教程演示 mongodb4.4 的副本集部署(一主两从,使用本地伪分布式)。
节点 | 配置 |
---|---|
主节点 | localhost:27018 |
从节点 | localhost:27019 |
从节点 | localhost:27020 |
每一个节点(实例)都手动创建对应的数据目录(data)和日志目录(log),bin目录从mongodb根目录复制。例如:
完成后应该是这样的,每个节点(实例)都有bin、data、log目录:
启动实例(服务)
语法:
mongod -port 端口号 -dbpath 数据路径 -logpath 日志路径 -replSet 副本集名称
进入每个实例的bin目录,使用cmd执行命令启动实例:
主节点(mg1)
mongod -port 27018 -dbpath D:\mongodbServer\mg1\data -logpath D:\mongodbServer\mg1\log\mongo1.log -replSet rs0
从节点1(mg2)
mongod -port 27019 -dbpath D:\mongodbServer\mg2\data -logpath D:\mongodbServer\mg2\log\mongo1.log -replSet rs0
从节点2(mg3)
mongod -port 27020 -dbpath D:\mongodbServer\mg3\data -logpath D:\mongodbServer\mg3\log\mongo1.log -replSet rs0
以上节点节点启动以后不要关闭命令行窗口,因为启动的都是一次性服务,关闭会导致进度丢失!
实例启动完成以后默认是没有输出的:
如果遇到启动失败,主要检查端口是否被占用,和路径配置问题。若都没问题则考虑以管理员身份启动cmd。
配置副本集
保持前面启动的实例开启,并进入一个任意节点启动服务,此处使用mg1:
进行集群的配置:
use admin
配置集群
config={_id:"rs0",members:[
... {_id:0,host:"localhost:27018",priority:5},
... {_id:1,host:"localhost:27019",priority:3},
... {_id:2,host:"localhost:27020",priority:1},
... ]}
参数说明:
_id | priority |
---|---|
副本集名称 | 优先级,数字越大,优先级越高 |
执行指令使得配置生效:
rs.initiate(config)
演示
PRIMARY
是主节点,SECONDARY
是从节点。
配置生效以后就会变成副本集名称:PRIMARY
,但是此处还是副本集名称:SECONDARY>
,此时我们只需要查看副本集状态即可更正:
rs.status()
验证副本集
启动从节点
mongo -port 27019
验证
show dbs
我们发现执行指令会报错无法执行,这是因为刚刚配置好的副本集中的从节点是无法进行数据库操作的,要先进行从节点永久化设置:
rs.secondaryOk()
再次验证副本集,先在主节点中增加数据:
在从节点上验证:
可以发现从节点已经可以正常使用了,注意:从节点无法执行增删改,只可以使用查功能。
补充:也可以关闭一个节点的实例,验证集群是否进行了故障转移,正常来说主节点会转移到优先级高的从节点,再次启动mg1实例,会发现mg1已经不是主节点了。