mongodb副本集搭建(windows):
搭建说明
一、安装所需的软件
1、安装mongodb
2、安装mongosh
二、环境准备
1、配置环境变量
2、创建数据文件夹
三、配置副本集
1、准备配置文件
2、编写配置文件
3、启动副本集
4、测试
四、注册服务
五、Q&A
Q1:无法注册服务
Q2:数据库软件无法连接
Q3:URL连接副本集(部分参数参考)
搭建说明
- windows10
- mongodb6.0.0(社区版)
- mongosh1.5.4
- navicat16
一、安装所需的软件
1、安装mongodb
本地使用,若没什么需要企业版的功能直接下载社区版即可;
官方下载网址:Download MongoDB Community Server | MongoDB
安装后需要重启一下。
2、安装mongosh
mongodb官方给出表示,在mongodb4.5的版本中逐渐弃用mongo的shell命令来连接数据库,改用mongosh,在6版本中已经完全弃用mongo这个shell命令,故而需要在下载一个shell来连接mongodb数据库
网址:https://www.mongodb.com/try/download/shell?jmp=docs
这里以msi为例
二、环境准备
1、配置环境变量
打开系统环境变量
在path变量下配置刚刚安装mongodb的bin目录,如图:
2、创建数据文件夹
进入mongodb的安装目录下的data目录文件夹
在其里面创建master与slaver文件夹,用于区分两个不同端口的数据文件
三、配置副本集
1、准备配置文件
需要创建一下几个文件:
- master.conf
- master.log
- master.pid
- db
- slaver.conf
- slaver.log
- slaver.pid
- db
我创建的目录位置为:
-
conf文件:
2、编写配置文件
PS:一下所有路径的文件必须手动创建好才可以,否则会出现无法运行
需要编写master.conf与slaver.conf文件
-
master.conf文件内容如下:
# mongodb端口 port=27018 # 绑定ip,只有这个ip才可以访问上mongodb bind_ip=127.0.0.1 # 日志文件的路径 logpath=D:\mongodb6.0.0\rs\data\master\master.log # 数据文件的目录 dbpath=D:\mongodb6.0.0\rs\data\master\db # 日志以追加的方式存在 logappend=true # mongodb进程的pid的值将存入此文件 pidfilepath=D:\mongodb6.0.0\rs\data\master\master.pid # 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5% # oplogSize=1024 # 复制集的名称,同一个复制集的名称必须要相同 replSet=rs0
slaver.conf文件内容如下:
# mongodb端口 port=27019 # 绑定ip,只有这个ip才可以访问上mongodb bind_ip=127.0.0.1 # 日志文件的路径 logpath=D:\mongodb6.0.0\rs\data\slaver\slaver.log # 数据文件的目录 dbpath=D:\mongodb6.0.0\rs\data\slaver\db # 日志以追加的方式存在 logappend=true # mongodb进程的pid的值将存入此文件 pidfilepath=D:\mongodb6.0.0\rs\data\slaver\slaver.pid # 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5% # oplogSize=1024 # 复制集的名称,同一个复制集的名称必须要相同 replSet=rs0
3、启动副本集
需要开启3个cmd命令控制行窗口:
选择其中两个cmd来作为启动mongodb的启动命令窗口
输入以下命令:
mongod --config "D:\mongodb6.0.0\rs\conf\master.conf"
mongod --config "D:\mongodb6.0.0\rs\conf\slaver.conf"
连接27018节点
mongosh --port 27018
切换admin管理员,并配置副本集
use admin
rsconf = {_id: "rs0",members: [{_id: 0,host: "127.0.0.1:27018","priority":10},{_id: 1,host: "127.0.0.1:27019"}]}
rs.initiate(rsconf)
# priority数值越高,就越有可能成为主节点
查看配置情况
rs.config()
# 查看副本集的配置和状态子集
rs.isMaster()
另:如需配置仲裁节点,可以多创建一个配置文件来配置仲裁节点
然后在主节点上配置仲裁节点的地址即可。
rs.addArb("host:port")
重新初始化:
rs.reconfig()
4、测试
通过navicat连接主节点与从节点
在主节点随便设置个集合
然后再打开从节点即可看到集合
再将主节点集合删除,从节点也会跟着删除,至此部署副本集完成
四、注册服务
按照 三、配置副本集搭建,只要cmd不关那么mongodb就能一直运行下去,但是谁又能保证不会失手关掉呢?接下来我们可以注册一下mongodb的副本集服务。
PS:需要完成3、启动副本集步骤之前的内容
-
请以管理员的身份打开cmd
2、请将输入以下两个注册命令,路径请根据你的具体实际情况修改
mongod.exe --config "D:\mongodb6.0.0\rs\conf\master.conf" --service --serviceName "mongodbMaster" --install
mongod.exe --config "D:\mongodb6.0.0\rs\conf\slaver.conf" --service --serviceName "mongodbSlaver" --install
启动注册好的两个服务即可。
net start mongodbMaster
net start mongodbSlaver
五、Q&A
Q1:无法注册服务
方法一:可以先将原本已有注册的mongodb(刚安装完会自动注册一个mongodb端口为27017的服务)删除,可以在W+R输入services.msc找到mongoDB的服务使用管理员打开cmd然后输入sc delele 服务名即可删除,之后再重新注册一下副本集的服务。
方法二:不适用conf文件注册,将conf文件上所需的配置一一提到命令行,例子:
mongod.exe --dbpath "" ----profileFilter "" --logpath "" --replSet "" ...... --service --serviceName "" --install
# 特别注意 replSet这个配置一定不能忘记,并且两个服务的replSet必须一样
Q2:数据库软件无法连接
是否对外开放了你的服务端口
如若用户密码设置了,检查是否真确
如果报错 node is not in primary or recovering state这个错误,就需要进行 3、启动副本集 找到第2步骤进行配置主从节点
Q3:URL连接副本集(部分参数参考)
注意,rs这个参数必须与配置文件的参数一摸一样
mongodb://127.0.0.1:27018,127.0.0.1:27019/tset?slaveOk=true&replicaSet=rs0&readPreference=primary
以下为参数参考
readPreference 读偏好设置
primary:主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。
primaryPreferred:首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
secondary:从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。
secondaryPreferred:首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。
nearest:最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点。
replicaSet:副本集标识,需要与连接主从的副本集参数标识一样
slaveOk:通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。