• mongodb3.6 副本集(三)mongodb 如何做数据备灾


    前言

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

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

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

    Demo

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

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

    Master

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

    Salve

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

    选举者配置文件

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

     启动三个mongodb实例

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

    mongod -f d:mongodb s1.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 s1.conf

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

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

    谢谢。 

  • 相关阅读:
    基于OpenVINO的端到端DL网络-GOMfcTemplate在vs2017上的运行并融合Dnn模块
    Windows环境下最新OpenCV和Contribute代码的联合编译【20190505更新红字】
    图像处理程序的序列化和反序列化
    OpenCv dnn模块扩展研究(1)--style transfer
    OpenCV自带dnn的Example研究(5)— segmentation
    OpenCV自带dnn的Example研究(6)— text_detection
    OpenCV自带dnn的Example研究(3)— object_detection
    OpenCV自带dnn的Example研究(4)— openpose
    OpenCV自带dnn的Example研究(1)— classification
    OpenCV自带dnn的Example研究(2)— colorization
  • 原文地址:https://www.cnblogs.com/liangxiarong/p/8440750.html
Copyright © 2020-2023  润新知