MongoDB副本集部署(windows)

一、介绍

副本集:

副本集(Replica Set)是一组MongoDB实例保持其相同数据集的集群,由一个主(Primary)服务器和多个副本(Secondary)服务器构成。通过复制(Replication)将数据的更新由主服务器推送到其它副本服务器上,在一定的延迟之后,达到每个MongoDB实例维护相同的数据集副本。副本集通过维护冗余的数据库副本、读写分离和故障自动转移的功能,摆脱数据库在使用过程中出现的环境故障影响,是所有生产环境部署的基础。
副本集有三个主要成员主节点(Primary)、副本节点(Secondary)、仲裁节点(Arbiter)。

主节点是副本集中负责处理客户端请求和读写数据主要成员。主节点通过oplog(操作日志)记录所有操作。副本集中有且只有一个主节点,如果当前主节点不可用,则会从副本节点中选举出新的主节点。
副本节点定期轮询主节点获取oplog记录的操作内容,然后对自己的数据副本执行这些操作,从而保证副本节点的数据副本与主节点保持一致。副本集中可以有一个或多个副本节点。当主节点宕机时,副本集会根据优先级选举出新的主节点
仲裁节点不会同步主节点的数据副本,也不会被选举为主节点,它主要是参与选举投票。仲裁节点需要的资源很小。当副本集中成员个数为偶数时,建议添加一个仲裁节点,防止选举新的主节点过程中出现票数一致,导致无法选举出新的主节点。

副本集成员架构:

客户端程序(Client Application)通过驱动器(Driver)连接副本集主节点(Primary)进行读写操作,当主节点数据副本发生变化,此时副本节点(Secondary)通过Replication(复制)同步主节点的数据副本,使副本集中副本节点与主节点存储相同数据副本。
副本集中的各节点还会通过传递心跳信息(Heartbeat)来检测各自的健康状态。当主节点故障时,拥有投票权的副本节点和仲裁节点(Arbiter)会触发一次新的选举操作,并从副本节点中选举出新的主节点,以确保副本集正常运行。

MongoDB副本集成员数与oplog:

MongoDB官网建议当副本集成员个数大于二时,推荐副本集成员个数为奇数个,而不使用仲裁节点。从MongoDB3.0版本起,副本集可以多达五十名成员,最多七个参与主节点选举投票的成员,并且其它成员不得拥有投票权。
oplog是一个特殊的固定集合,它保存了副本集主节点中所有的数据变化记录,所有副本集成员(除仲裁节点)都在local.oplog.rs集合中包含一个oplog的副本,每个副本节点的oplog都会保持与主节点的 oplog完全一致的状态(可能会有一些延迟)。

二、部署副本集:

环境准备(演示mongodb4.4版本):

先配置副本路径,也就是配置三个实例,在配置之前先停止正在运行的mongod.exe,也就是我们的服务。副本集各服务器的基本信息及角色分配如下表。

将之前配置好的mongodb里的bin复制到mongodb1中,在mongodb1中新建db文件夹和log文件夹存在对应的数据库数据以及日志数据。

启动三个实例:

需要使用replSet命令,在每个bin目录下启动,注意路径不要写错(注意对应):

实例1(如果之前就创建好了,所以在启动之前一定要关闭服务):

实例2:

实例3(都不要关闭窗口):

tips:

这里启动实例的方法和教程1中安装mongodb的方法-一致,都是一次性的服务,每次打开某个实例都需要启动服务才可以,如果要创建永久服务则需安装服务。,这里不再演示,详情查看 Mongodb教程1方法二(创建永久服务)。

配置集群:

进入其中一个实例,配置设置:

其中第一个“id”为复制集的ID标识,即"id":"rs0";第二个"id”是复制集内成员的标识,即"id":0。 priority为节点优先级,数字越高,优先级越高。

请注意编写代码前的">符号的变化,在没有配置好复制集之前只有">",初始化后有"
rs0:SECONDARY>"了,SECONDARY表示该节点是从节点,PRIMARY表示该节点是主节点。[当然,当前显示有点问题,查看一下状态就会改变].

使用命令来查看复制状态:

我们现在已经完成了复制集的搭建。
还有一种初始化的方法,就是先只初始化一个节点,然后再通过命令rs.add("ip:port")来添加从节点或通过命令rs.addArb("ip:port")来添加投票节点。

验证MongoDB复制集:

接下来需要验证一下复制集的数据同步。

在主节点上(127.0.0.1:27017)上的est库collection集合c1中插入数据。

登录另一个从节点(127.0.0.1:27019)验证是否同步,命令:

我们需要运行命令:副本集的从库持久设置

到这里MongoDB复制集数据同步就完成了。

  • 52
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值