记录实现mongodb单节点副本集(Windows)


前言

资料均为网上整理, 记录供后续项目维护

搭建环境

  1. Windows 10
  2. MongoDB 6.0.0(社区版)
  3. mongosh 2.0.2
  4. MongoDBCompass

一、安装所需的软件

1.安装MongoDB

由于是内部项目需求, 所以只需要社区版功能即可

地址: https://www.mongodb.com/try/download/community

安装流程:

下载MongoDB
安装流程

2.安装mongosh

这里以 msi 安装方式为例
地址: https://www.mongodb.com/try/download/shell?jmp=docs
在这里插入图片描述

二、环境准备

1.配置环境变量

打开系统环境变量
path 变量下配置刚才安装MongoDB的 bin 目录, 如下图所示 :

在这里插入图片描述

2.创建数据文件夹

进入MongoDB的安装目录下的 data 目录文件夹
在其内部创建 masterslaver 文件夹
在这里插入图片描述

三、配置副本集

1、准备配置文件:

  • master.conf
  • master.log
  • master.pid
  • db
  • slaver.conf
  • slaver.log
  • slaver.pid
  • db

下面是我创建的实例:
在这里插入图片描述

2、编写配置文件

PS: 所有文件均要手动创建好, 不然会无法启动 ! ! !
需要编写 master.confslaver.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

#副本集共享秘钥(目录以自己存放位置为准)
#keyFile=/home/mongod/mongodb/keyfile
#开启访问控制
#auth=true

  • 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

#副本集共享秘钥(目录以自己存放位置为准)
#keyFile=/home/mongod/mongodb/keyfile
#开启访问控制
#auth=true

3、启动副本集

需要开启三个命令行窗口
在这里插入图片描述

  1. 选择其中两个cmd 来作为启动MongoDB的启动窗口
    输入以下命令:
mongod --config "D:\mongodb6.0.0\rs\conf\master.conf"
mongod --config "D:\mongodb6.0.0\rs\conf\slaver.conf"

在这里插入图片描述

  1. 连接27018节点
mongosh --port 27018

在这里插入图片描述

  1. 切换 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数值越高,就越有可能成为主节点

在这里插入图片描述

  1. 查看配置情况
rs.config()

在这里插入图片描述

# 查看副本集的配置和状态子集
rs.isMaster()

在这里插入图片描述
PS: 如果需要配置仲裁节点, 可以多创建一个配置文件(arbiter)来配置仲裁节点, 文件类似master\slaver
然后在主节点上配置仲裁节点即可

rs.addArb("host:port")

重新初始化

rs.reconfig()

4、测试

使用MongoDBCompass连接上 27018 和 27019 节点, 然后在其中一个节点上增加或删除集合, 看另一个节点是否同步

四、注册服务

按照 三、配置副本集搭建,只要cmd不关那么mongodb就能一直运行下去,但是谁又能保证不会失手关掉呢?接下来我们可以注册一下mongodb的副本集服务

  1. 请以管理员的身份打开 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

在这里插入图片描述

  1. 启动注册好的两个服务即可
net start mongodbMaster
net start mongodbSlaver

在这里插入图片描述
PS: 这里可能会出现 服务名 未注册的情况, 那是因为刚安装完MongoDB后, 会自动起一个27017的服务, 可以在W+R输入services.msc找到mongoDB的服务使用管理员打开cmd然后输入sc delele 服务名即可删除,之后再重新注册一下副本集的服务;
如果还是不行, 可能不适用conf文件注册,将conf文件上所需的配置一一提到命令行,例子:

mongod.exe --dbpath "" --pidfilepath "" --logpath "" --replSet "" ...... --service --serviceName "" --install 

# 特别注意 replSet这个配置一定不能忘记,并且两个服务的replSet必须一样

然后注册再启动就好了

五、权限控制

** PS ** : 如果你需要用户权限控制, 那么你可能注意到配置文件里面注释掉的auth、keyFile属性

  1. 首先: 添加身份认证之前,必须先创建用户并设置授权,只需在主节点(PRIMARY)上添加用户即可,会自动同步到备份节点。
#在主节点服务器上连接mongodb
mongosh --port 27018
#切换admin数据库
> use admin;
#创建并认证root权限的用户
> db.createUser({user:"root",pwd:"root",roles:["root"]});
> db.auth("root","root"); //返回“1”,则认证成功
#切换并创建testLogs数据库(用户是针对数据库创建的)
> use testLogs;
#创建并认证读写权限用户(提供给应用连接的用户)
> db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite",db:"testLogs"}]});
> db.auth("test",test"); //返回“1”,则认证成功
  1. 服务重启: 可以使用命令, 也可以直接在Windows服务里面停止
  2. 去掉注释保存配置,重新启动服务,启动顺序 主-从-从
  3. 验证一下用户验证是否添加成功吧
#连接数据库
mongosh --port 27018
#切换admin库
> use admin;
#查看集群状态
> rs.status();

提示需要认证才能执行rs.status()命令,至此认证已生效
在这里插入图片描述

  1. 认证后,即可操作:
db.auth("root","root");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值