MongoDB副本集

本文详细介绍了MongoDB副本集的概念,包括主要成员和辅助成员的角色、自动故障转移机制以及部署过程中的环境准备、配置和验证。通过实例演示了如何启动、配置和检查复制集状态,以及故障转移的处理方法。
摘要由CSDN通过智能技术生成

部署副本集概述

副本集是一组维护相同数据集的 MongoDB 部署。副本集提供冗余和高可用性,是所有生产部署的基础。

什么是MongoDB副本集?

属于某个副本集的每个MongoDB实例都是一个成员。每个副本集都需要有一个主要成员和至少一个辅助成员。

主要成员是与副本集进行交易的主要访问点。它也是唯一可以接受写操作的成员。副本首先复制主成员的OPLOG(操作日志)。接下来,它在第二层的各自数据集上重复记录的变化。因此,每个副本集在同一时间只能有一个主要成员。不同的主站接受写操作会导致数据冲突。

通常情况下,应用程序只查询主要成员的写和读操作。你可以设计你的设置,从一个或多个辅助成员中读取。异步数据传输会导致二级节点的读取为旧数据服务。因此,这样的安排并不是每个用例的理想选择。

副本集的特点

自动故障转移机制使MongoDB的副本集在其竞争中脱颖而出。在没有主节点的情况下,副节点之间的自动选举会选出一个新的主节点。

MongoDB中的副本是如何工作的?

在MongoDB中,你将写操作发送到主服务器(节点)。主服务器将这些操作分配到次服务器上,复制数据。

在三种类型的MongoDB节点中,有两种曾经出现过:主节点和次节点。第三种在复制过程中派上用场的MongoDB节点是一个仲裁者。仲裁者节点没有数据集的副本,不能成为主节点。虽然如此,仲裁者确实参与了主节点的选举。

我们之前提到过当主节点瘫痪时会发生什么,但如果次要节点被咬了怎么办?在这种情况下,主节点变成了次要节点,数据库变得无法访问。

环境准备

在MongoDB中部署一个复制集需要至少三个节点,首先配置副本路径,也就是配置三个实例,在配置之前先停止正在运行的mongo.exe,也就是我们的服务。

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

启动三个实例

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

mongod -port 27017 -dbpath E:\XL\MongoDB\data -logpath E:\XL\MongoDB\log\mongo.log -logappend -replSet rs0
mongod -port 27018 -dbpath E:\XL\MongoDB1\data -logpath E:\XL\MongoDB1\log\mongo1.log -replSet rs0
mongod -port 27019 -dbpath E:\XL\MongoDB2\data -logpath E:\XL\MongoDB2\log\mongo2.log -replSet rs0
第一个案例

第二个案列

第三个案例

注意:

启动案例的方法和教程1中安装MongoDB的方法一致,都是一次性的服务,每次打开某个案列都需要启动服务才可以,如果要创建永久服务则需要安装服务。

配置集群

进入MongoDB,配置设置

1.先进入MongoDB,再切换到admin数据库

2.配置节点优先级

priority为节点优先级,数字越高,优先级越高

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

rs.status()

最后出现PRIMARY表示状态是正确的,当前节点是主节点

我们现在已经完成复制集的搭建

验证MongoDB复制集

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

在主节点27017上的test库collection集合c1中插入数据

use test

db.c1.insert({name:"xjt",age:1})

登录另一个节点27018验证是否同步

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

rs.slaveOk()

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

故障转移

比如关闭主节点案列(前面一直不关闭的窗口第一个)

登录27018端口,会发现,他变成了主节点

重新再启动27017节点时候,27018会转换成从节点

到这里部署副本集就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值