mongodb3.6 副本集假期第一天——第二篇文章 mongodb 如何做数据备灾

Posted 天道酬勤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb3.6 副本集假期第一天——第二篇文章 mongodb 如何做数据备灾相关的知识,希望对你有一定的参考价值。

前言

 个人理解,副本集一个主要作用就是当Master库出现故障,其中的一个salve从库会被选举出来成为新的Master。框架图如下:

 

其中,选举者是不参与数据存储的,它的作用只是为了选举出新的Master。当原Master恢复后,他也只会以从库salve身份加入到副本集中。

当然,我们也可以在恢复启动它的时候手动配置priority参数,让他成为Master。

Demo

下面通过具体的例子说明。

首先在mongo目录下建立3个(一个作为master,一个作为从库,一个作为选举者,在实际项目中,这三个服务最后放在不同的服务器上)配置文件,文件内容如下:

Master

#配置mongodb数据的存储路径
dbpath=D:\\mongodb\\data\\rs1
#配置mongodb日志文件
logpath=D:\\mongodb\\log\\rs1.log
#配置端口,若不配置,默认27017端口
port=40001
#副本集名字,每个配置文件中需保持一致
replSet=rs_test

Salve

#配置mongodb数据的存储路径
dbpath=D:\\mongodb\\data\\rs2
#配置mongodb日志文件
logpath=D:\\mongodb\\log\\rs2.log
#配置端口,若不配置,默认27017端口
port=40002
#副本集名字,每个配置文件中需保持一致
replSet=rs_test

选举者配置文件

#配置mongodb数据的存储路径
dbpath=D:\\mongodb\\data\\rs3
#配置mongodb日志文件
logpath=D:\\mongodb\\log\\rs3.log
#配置端口,若不配置,默认27017端口
port=40003
#副本集名字,每个配置文件中需保持一致
replSet=rs_test

 启动三个mongodb实例

首先,在bin 目录下打开三个shell窗口,分别启动上面配置的三个mongodb,如下命令:

mongod -f d:\\mongodb\\rs1.conf  

若是都启动成功,我们将会在日志文件中看到主要的信息:

waiting for connections on port 40003

其次,连接配置在40001端口的mongodb实例:

mongo -port 40001

初始化40001 为master:

rs.initiate()

初始化成功,使用命令rs.status() 查看副本集状态,将会看到如下图:

从图中可以看到40001已经作为primary 启动。

再次,执行命令 rs.add("127.0.0.1:40002")  添加从库。

添加选举者:rs.addArb("127.0.0.1:40003") 

再次执行 rs.status() 查看副本集的状态,将会看到如下图:

 

验证 选举

关闭40001 服务端窗口(故障停机),在40002窗口执行 rs.status(),将会看到如下图:

 

最后,再次启用40001 服务端,在bin 下 执行  mongod -f d:\\mongodb\\rs1.conf

然后 再次查看状态 rs.status() ,可以看到40001已经重新加入到副本集并且是作为从库加入的,如下图:

 

 关于mongodb 副本集就介绍到这里,希望对大家有帮助。文中如有不对的地方,欢迎指出。

谢谢。 

 

以上是关于mongodb3.6 副本集假期第一天——第二篇文章 mongodb 如何做数据备灾的主要内容,如果未能解决你的问题,请参考以下文章

YOLOv5解析 | 第二篇:用YOLOv5训练自己的数据集(超级详细完整版)

YOLOv5解析 | 第二篇:用YOLOv5训练自己的数据集(超级详细完整版)

Web架构之路:MongoDB集群及高可用实践

MongoDB副本集replica set--成员配置

自学C第二篇

搭建MongoDB副本集&分片