MongoDB主从复制以及副本集的配置和使用

Posted 李晓娜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB主从复制以及副本集的配置和使用相关的知识,希望对你有一定的参考价值。

  上篇主要讲解的是主从复制,这次我们来讲一下副本集。

       副本集的优点在于:副本集采用的是心跳机制,当主机的节点挂掉之后,会从从服务器中通过选择机制再次选择一个主节点,这个主副切换是自动进行的

 Ø  副本集的配置与使用

  配置

  与主从配置基本类似,我们先建立与主从复制基本一直的目录,

  服务器端配置文件参数配置

  启动服务器的服务端

  启动服务器的客户端

  文件目录如图:


  与主从配置唯一不一样的就是.conf文件

  配置如下图:

  其他的配置一样,只要把对应的输出路径,端口号进行修改即可

  初始化副本集

  当配置完毕之后,我们登录其中的一台,并且切换到admin数据库,此时执行配置:

  输入命令后回车


  之后初始化配置:


  此时出现错误,大概提示错误就是我连接不上127.0.0.1:2222和127.0.0.1:3333,原因在于我没有启动这个服务,启动之后再次输入命令:提示ok.

  我们可以查看一下当前的状态:


  我们发现一个为主节点,其他两个为副本

  Health参数为1表示机器正常

      stateStr  "PRIMARY",  #代表是主节点,可读写

  此时我们退出1111,再次登录发现提示符发生了变化

  而其他两个是:SECONDARY

  测试数据的写入和读取

  在主节点进行数据库,集合的创建以及数据的插入,Mongodb默认会创建不存在的数据库或者集合。


  之后在副本集中进行读取

  副本集默认没有读取权限,所以我们需要设置使用命令db.getMongo().setSlaveOk()

此时我们就可以读取到相关的数据了

 Ø  副本集的优势

  不同于主从复制,副本集是不需要进行主服务器的指定的,在使用的过程中,通过一定的算法进行选出来的。

并且当当前使用的主节点宕机的时候,会从剩下的副本集中再次通过选举选出一个主节点,这样的话,服务不会间断的提供,并且当已经故障的机器再次回到这个副本集中的时候,不会再次直接以主节点的身份出现,而是以备份的身份出现。

  借鉴一张图:

  这张图很清晰的说明这个流程和机制。


以上是关于MongoDB主从复制以及副本集的配置和使用的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB——MongoDB副本集(Replica Sets)

MongoDB——MongoDB副本集(Replica Sets)

mongodb单机升级为副本集

MongoDb 4.2.7 配置复制(副本集replSet)实现主从同步(Windows)

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

MongoDB主从复制和副本集