• mongdb复制集搭建


    可参考官网教程

    复制集增加了数据的冗余同时也提高了mongodb的可靠性,相比传统的主从架构,mongodb具有自动容灾的特性,即主库挂掉后会自动从剩下的从库中选举出一个节点做为主库(不需要人工干预),继续为客户端提供服务。

    目前为止,复制集最多只能包含12个节点,但只能有7个投票节点(vote不为0的节点,非arbiter)。

    注意:复制集要想正常工作,必须满足二分之一原则,否则所有节点都将降级为从节点,复制集将不能提供写服务。

    复制集节点通常部署奇数个,若只有偶数个节点,可添加一个arbiter。

    主节点:为客户端提供服务,进行数据读写

    从节点:默认情况下,从节点不提供读写服务,若要查看从库内容,需先执行:rs.slaveOk(),主要用于读取主节点opLog,同步主节点数据,起到数据备份的作用,当主节点异常,会进行自动选举,在剩下的从节点中选举出一个成为主节点继续提供服务。

    投票节点(arbiter): 不存储数据,主要用于选举是投票。

    下面开始接受复制集搭建步骤:

    此处假设我有三台服务器,分别为:192.168.103.54, 192.168.103.56, 192.168.103.57

    1、在三台服务器上分别安装mongdb

    2、修改各mongdb的配置文件:/etc/mongod.conf,执行如下指令

    vi /etc/mongod.conf

    此处主要修改监听网卡(bindIp)和复制集名称(replSetName),修改后配置文件如下

    # mongod.conf
    
    # for documentation of all options, see:
    #   http://docs.mongodb.org/manual/reference/configuration-options/
    
    # where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    # Where and how to store data.
    storage:
      dbPath: /var/lib/mongo
      journal:
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # how the process runs
    processManagement:
      fork: true  # fork and run in background
      pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
    
    # network interfaces
    net:
      port: 27017
      bindIp: 127.0.0.1,192.168.103.54  # Listen to local interface only, comment to listen on all interfaces.
    
    
    #security:
    
    #operationProfiling:
    
    replication:
      replSetName: teejo
    
    #sharding:
    
    ## Enterprise-Only Options
    
    #auditLog:
    
    #snmp:

    注意:复制集中节点复制集名称必须一致,此处为teejo

    3、初始化复制集

    启动三台服务器上的mongodb,连接上其中一台,执行如下操作

    rs.initiate( {
       _id : "teejo",   //复制集名称,必须和配置文件中保持一致
       members: [
          { _id: 0, host: "192.168.103.54:27017" },
          { _id: 1, host: "192.168.103.56:27017" },
          { _id: 2, host: "192.168.103.57:27017" }
       ]
    })

    到此,复制集配置完成。

    下面介绍几个复制集状态查看指令

    rs.conf()             //输出复制集配置情况,可查看复制集包含的节点,以及各几点配置参数
    rs.status()           //查看复制集运行状态,可从中看出那个是主那个是从

    扩展

    当只有单机单实例时也可以以复制集启动,这样做的好处是方便日后扩展

    假设我只有服务器:192.168.103.54

    执行如下初始化,使其以复制集启动:

    rs.initiate( {
       _id : "teejo",
       members: [
          { _id: 0, host: "192.168.103.54:27017" }
       ]
    })

    之后我又添置了服务器:192.168.103.56,192.168.103.57,将其添加到复制集

    执行:

    rs.add("192.168.103.56:27017")
    rs.add("192.168.103.57:27017")

    执行:rs.conf(),可查看到复制集节点添加成功,

    若是添加投票节点,调用方法:rs.addArb()

  • 相关阅读:
    baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签
    ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法
    layDate 闪现 循环一个以上会闪现
    typescript定义函数类型
    typescript中的类与接口的关系
    typescript中的类
    typescript中的接口
    mac 上配置 ssh 免密登录服务器 【非常简单】
    Go语言中的map(十一)
    Go语言中的切片(十)
  • 原文地址:https://www.cnblogs.com/yinz/p/8534216.html
Copyright © 2020-2023  润新知