美文网首页
mongoDB4.0副本集讲解及配置

mongoDB4.0副本集讲解及配置

作者: 骑驴追地瓜 | 来源:发表于2018-09-27 22:41 被阅读0次

    layout: pages
    title: mongoDB4.0副本集讲解及配置
    date: 2018.09.27
    tags: mongoDB


    1.副本集的作用

    • 复制提供了冗余并增加了数据可用性。在不同的数据库服务器上有多个数据副本,复制提供了对单个数据库服务器丢失的容错能力。
    • 副本集可以支持客户端读取,增加了mongo的读能力,且可以为灾难恢复和报告等提供特殊的副本。

    简单的理解可以将mongo的副本集比作主从。
    官方解释:

    image.png

    2.副本集架构描述

    • 副本集仅有一个主节点,其它均为次节点,次节点可为多个,主节点可写可读,次节点仅可读,次节点会根据oplog同步主的数据,如下图:


      image.png
    image.png
    • 当一个主节点挂掉了以后,次节点会进行选举,选举出一个新的主节点(关于副本集的选举)

      image.png
    • 读操作,默认是读主节点,但是客户端可以通过设置读偏好来决定,可以对副本集进行读取(关于读偏好的设置和说明)

    • 事务,mongo4.0以后支持了副本集多文档事务,如果使用副本集事务必须将读偏好设置为primary,一次事务操作必须要路由到同一个节点。

    • Change Streams,mongo3.6以后提供了changeStreams,可以用来订阅集合上的数据变更,不用像以前一样使用oplog去监听变更了,降低了复杂度和风险。(change streams详细说明)

    3.副本集的配置

    • 准备工作 我们将37017,37018,37019做为一组副本集
    • 首先要安装mongodb
        mkdir /mongodb/bin
        cd  /mongodb
       wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.2.tgz
        tar xf  mongodb-linux-x86_64-rhel70-4.0.2.tgz
        cd mongodb-linux-x86_64-rhel70-4.0.2.tgz/bin/
        cp * /mongodb/bin
    
    • 构建目录
    for  i in 37017 37018 37019
        do 
          mkdir -p /mongodb/$i/conf  
          mkdir -p /mongodb/$i/data  
          mkdir -p /mongodb/$i/log
    done 
    
    • 编辑配置文件
    cat >>/mongodb/37017/conf/mongod.conf<<'EOF'
    systemLog:
      destination: file
      path: /mongodb/37017/log/mongodb.log
      logAppend: true
    storage:
      journal:
        enabled: true
      dbPath: /mongodb/37017/data
      directoryPerDB: true
      wiredTiger:
        engineConfig:
          directoryForIndexes: true
        collectionConfig:
          blockCompressor: zlib
        indexConfig:
          prefixCompression: true
    processManagement:
      fork: true
    net:
      port: 37017
    replication:
      oplogSizeMB: 2048
      replSetName: rep1
    EOF
    
    • 复制配置文件
    for i in 37018 37019
      do  
       \cp  /mongodb/37017/conf/mongod.conf  /mongodb/$i/conf/
    done
    
    • 修改配置文件
    for i in 37018 37019
      do 
        sed  -i  "s#37017#$i#g" /mongodb/$i/conf/mongod.conf
    done
    
    • 启动服务
    for i in 37018 37019
      do  
        mongod -f /mongodb/$i/conf/mongod.conf  --bind_ip_all
    done
    

    -配置副本集

    ./mongo --port 37017
    config = {_id: 'rep1', members: [
                              {_id: 0, host: 'ip:37017'},
                              {_id: 1, host: 'ip:38018'},
                              {_id: 2, host: 'ip:39019'}]
              }
    rs.initiate(config)
    

    完毕,欢迎大家评论与指正。

    参考文档
    [1]https://docs.mongodb.com/manual/replication
    [2]https://www.cnblogs.com/clsn/p/8214345.html

    相关文章

      网友评论

          本文标题:mongoDB4.0副本集讲解及配置

          本文链接:https://www.haomeiwen.com/subject/smmmnftx.html