mongodb副本集搭建(windows)
搭建说明
- windows10
- mongodb6.0.0(社区版)
- mongosh1.5.4
- navicat16
一、安装所需的软件
1、安装mongodb
本地使用,若没什么需要企业版的功能直接下载社区版即可;
官方下载网址:https://www.mongodb.com/try/download/community
安装后需要重启一下。
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
- slaver.conf
- slaver.log
- slaver.pid
我创建的目录位置为:
2、编写配置文件
需要编写master.conf与slaver.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
-
# 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的副本集服务。
-
请以管理员的身份打开cmd
-
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步骤进行配置主从节点
PS:文章写的好的话,希望各位亲点个赞