• Mongodb的入门(6)副本集


    Mongodb的副本集:(有两种情况,主从复制,副本集)

      这次我来说一下mongodb的副本集,副本集的出现可以有效的保证mongodb的单点问题,对数据的稳健性有一定辅助作用:

      MongoDB复制:是将数据同步在多个服务器的过程。

        1.复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

        2.复制还允许您从硬件故障和服务中断中恢复数据。


      什么是复制?

      • 保障数据的安全性
      • 数据高可用性 (24*7)
      • 灾难恢复
      • 无需停机维护(如备份,重建索引,压缩)
      • 分布式读取数据

    MongoDB复制原理:

      mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

      mongodb各个节点常见的搭配方式为:一主一从、一主多从。

      主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

         


    Mongodb的主从复制:

       由于我本地已经装载了一个mongodb服务,我就在本地模拟两个mongdb启动做数据备份的操作:

         1> 配置路径如下:

          

         2> 进入各服务下的bin目录启动mongodb 并指定端口:Server1的对应master port = 27011    

          mongod.exe --dbpath=E:mongodbRsdb1 --master --port=27011

          

          Server2下是复制的mongodb  port=27012     mongod.exe --dbpath=E:mongodbRsdb2 --port=27012 --slave --source=127.0.0.1:27011

          启动后一直监控:

          

        3>在27011 上插入一条记录:

          27012上就能看到变化:

          

          

    ·      报错的解决办法:

          

          注意:丛库只允许查询,插入会报错

          

        4>动态追加从属数据库    有印象就行,

          上面介绍的是在mongodb启动的时候,就知道主数据是哪个,下面我来说一种动态追加的方式:

          

         启动mongodb,不指定主库:mongod.exe --dbpath=E:mongodbRsdb3 --port=27013 --slave

          

         上面显示信息是指没有master库配置:配置方式如下:

          

        查看mongodb3的服务启动信息可以查看到:slave生效了

          

        到这动态追加从库也配置完成:

      5>读写分离

           这种手段在大一点的架构中都有实现,在mongodb中其实很简单,在默认的情况下,从属数据库不支持数据的读取,但是没关系,

      在驱动中给我们提供了一个叫做“slaveOkay"来让我们可以显示的读取从属数据库来减轻主数据库的性能压力

      


    对比:一主两从

        

      到这主从复制就基本上说完了,下面说副本集的搭建和介绍


    Mongdb的副本集:  

       副本集的特点:

        1> 副本集没有特定的主数据库。

              2>如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能,

         

      副本集在搭建过程中,要保证数据是清空的,因为我上面搭建的主从复制的数据都保存在db1 db2 db3中,所以在搭建副本集时,要先清空数据,保证搭建副本集的纯净环境


      副本集:(搭建命令)
          mongod.exe --port 27011 --dbpath=E:mongodbRsdb1 --replSet rs0
          mongod.exe --port 27012 --dbpath=E:mongodbRsdb2 --replSet rs0
          mongod.exe --port 27013 --dbpath=E:mongodbRsdb3 --replSet rs0

           副本集搭建过程:

        

      rs.status():查询副本集的状态:截图如下:

        

      6>刚说副本集是没有主节点的集群,主节点宕机后其他节点会自动切换回来,下面我模拟这种场景,把27011干掉:

        

      7>我再把27011节点起来,这时候他作为一个从节点的状态又回到了集群中:

        

      


      至此,mongodb的主从复制和副本集的搭建已经全部完成,不会的搭建可以参考:http://www.runoob.com/mongodb/mongodb-replication.html

      

        

  • 相关阅读:
    Reverse linked list
    Implement Queue by Two Stacks
    Min Stack
    Search a 2D Matrix
    50. Pow(x, n)
    监控hdfs的一个目录,若有新文件,spark就开始处理这个文件,可以使用spark streaming textfilestream来监控该目录
    kafka2在重启消费者以后已经提交offset回退了 什么原因(待完善)
    Hybrid Recommender Systems: Survey and Experiments
    开源实时日志分析平台
    scala为什么要清理闭包
  • 原文地址:https://www.cnblogs.com/huhongy/p/9413665.html
Copyright © 2020-2023  润新知