zoukankan      html  css  js  c++  java
  • 5. mongodb之sharding-cluster(分片集群)搭建和配置

    0.mongodb分片思想

                            

    1.mongodb之sharding-cluster(分片集群)

      1.1 规划

    10个实例:38017-380261)configserver:38018-38020
    3台构成的复制集(1主两从,不支持arbiter)38018-38020(复制集名字configsvr)
    (2)shard节点:
    sh1:38021-23    (1主两从,其中一个节点为arbiter,复制集名字sh1)
    sh2:38024-26    (1主两从,其中一个节点为arbiter,复制集名字sh2)
    (3) mongos:
    38017

    2.sharding节点的配置过程

      2.1目录的创建

    mkdir -p /mongodb/38021/conf  /mongodb/38021/log  /mongodb/38021/data
    mkdir -p /mongodb/38022/conf  /mongodb/38022/log  /mongodb/38022/data
    mkdir -p /mongodb/38023/conf  /mongodb/38023/log  /mongodb/38023/data
    mkdir -p /mongodb/38024/conf  /mongodb/38024/log  /mongodb/38024/data
    mkdir -p /mongodb/38025/conf  /mongodb/38025/log  /mongodb/38025/data
    mkdir -p /mongodb/38026/conf  /mongodb/38026/log  /mongodb/38026/data

      2.2修改配置文件

      第一组复制集的搭建(21-23  一主一从一Arb)

    cat >  /mongodb/38021/conf/mongodb.conf  <<EOF
    systemLog:
      destination: file
      path: /mongodb/38021/log/mongodb.log   
      logAppend: true
    storage:
      journal:
        enabled: true
      dbPath: /mongodb/38021/data
      directoryPerDB: true
      #engine: wiredTiger
      wiredTiger:
        engineConfig:
          cacheSizeGB: 1
          directoryForIndexes: true
        collectionConfig:
          blockCompressor: zlib
        indexConfig:
          prefixCompression: true
    net:
      bindIp: 172.17.94.206,127.0.0.1
      port: 38021
    replication:
      oplogSizeMB: 2048
      replSetName: sh1
    sharding:
      clusterRole: shardsvr
    processManagement: 
      fork: true
    EOF
    cp  /mongodb/38021/conf/mongodb.conf  /mongodb/38022/conf/
    cp  /mongodb/38021/conf/mongodb.conf  /mongodb/38023/conf/
    
    sed 's#38021#38022#g' /mongodb/38022/conf/mongodb.conf -i
    sed 's#38021#38023#g' /mongodb/38023/conf/mongodb.conf -i

      第二组复制集的搭建(24-26  一主一从一Arb) 

    cat > /mongodb/38024/conf/mongodb.conf <<EOF
    systemLog:
      destination: file
      path: /mongodb/38024/log/mongodb.log   
      logAppend: true
    storage:
      journal:
        enabled: true
      dbPath: /mongodb/38024/data
      directoryPerDB: true
      wiredTiger:
        engineConfig:
          cacheSizeGB: 1
          directoryForIndexes: true
        collectionConfig:
          blockCompressor: zlib
        indexConfig:
          prefixCompression: true
    net:
      bindIp: 172.17.94.206,127.0.0.1
      port: 38024
    replication:
      oplogSizeMB: 2048
      replSetName: sh2
    sharding:
      clusterRole: shardsvr
    processManagement: 
      fork: true
    EOF
    
    cp  /mongodb/38024/conf/mongodb.conf  /mongodb/38025/conf/
    cp  /mongodb/38024/conf/mongodb.conf  /mongodb/38026/conf/
    sed 's#38024#38025#g' /mongodb/38025/conf/mongodb.conf -i
    sed 's#38024#38026#g' /mongodb/38026/conf/mongodb.conf -i

      2.3启动所有节点,并搭建复制集

    mongod -f  /mongodb/38021/conf/mongodb.conf 
    mongod -f  /mongodb/38022/conf/mongodb.conf 
    mongod -f  /mongodb/38023/conf/mongodb.conf 
    mongod -f  /mongodb/38024/conf/mongodb.conf 
    mongod -f  /mongodb/38025/conf/mongodb.conf 
    mongod -f  /mongodb/38026/conf/mongodb.conf  
    ps -ef |grep mongod  ####可以通过这个命令查询出所有的mongod的后端启动情况
    
    mongo --port 38021 admin
    
    config = {_id: 'sh1', members: [
                              {_id: 0, host: '172.17.94.206:38021'},
                              {_id: 1, host: '172.17.94.206:38022'},
                              {_id: 2, host: '172.17.94.206:38023',"arbiterOnly":true}]
               }
    
    rs.initiate(config)
      
     mongo --port 38024 admin
     
    config = {_id: 'sh2', members: [
                              {_id: 0, host: '172.17.94.206:38024'},
                              {_id: 1, host: '172.17.94.206:38025'},
                              {_id: 2, host: '172.17.94.206:38026',"arbiterOnly":true}]
               }
      
    rs.initiate(config)

    3.configserver节点

      3.1 创建目录

    mkdir -p /mongodb/38018/conf  /mongodb/38018/log  /mongodb/38018/data
    mkdir -p /mongodb/38019/conf  /mongodb/38019/log  /mongodb/38019/data
    mkdir -p /mongodb/38020/conf  /mongodb/38020/log  /mongodb/38020/data

      3.2 修改配置文件

    cat > /mongodb/38018/conf/mongodb.conf <<EOF
    systemLog:
      destination: file
      path: /mongodb/38018/log/mongodb.conf
      logAppend: true
    storage:
      journal:
        enabled: true
      dbPath: /mongodb/38018/data
      directoryPerDB: true
      #engine: wiredTiger
      wiredTiger:
        engineConfig:
          cacheSizeGB: 1
          directoryForIndexes: true
        collectionConfig:
          blockCompressor: zlib
        indexConfig:
          prefixCompression: true
    net:
      bindIp: 172.17.94.206,127.0.0.1
      port: 38018
    replication:
      oplogSizeMB: 2048
      replSetName: configReplSet
    sharding:
      clusterRole: configsvr
    processManagement: 
      fork: true
    EOF
    
    cp /mongodb/38018/conf/mongodb.conf /mongodb/38019/conf/
    cp /mongodb/38018/conf/mongodb.conf /mongodb/38020/conf/
    sed 's#38018#38019#g' /mongodb/38019/conf/mongodb.conf -i
    sed 's#38018#38020#g' /mongodb/38020/conf/mongodb.conf -i

      3.3启动节点并配置复制集

    mongod -f /mongodb/38018/conf/mongodb.conf 
    mongod -f /mongodb/38019/conf/mongodb.conf 
    mongod -f /mongodb/38020/conf/mongodb.conf 
    
    mongo --port 38018  admin
     config = {_id: 'configReplSet', members: [
                              {_id: 0, host: '172.17.94.206:38018'},
                              {_id: 1, host: '172.17.94.206:38019'},
                              {_id: 2, host: '172.17.94.206:38020'}]
               }
    rs.initiate(config)  
      
    注:configserver 可以是一个节点,官方建议复制集。configserver不能有arbiter。
    新版本中,要求必须是复制集。
    注:mongodb 3.4之后,虽然要求config server为replica set,但是不支持arbiter

    4. mongo节点的配置

      4.1创建目录 

    mkdir -p /mongodb/38017/conf  /mongodb/38017/log 

      4.2配置文件

    cat > /mongodb/38017/conf/mongos.conf <<EOF
    systemLog:
      destination: file
      path: /mongodb/38017/log/mongos.log
      logAppend: true
    net:
      bindIp: 172.17.94.206,127.0.0.1
      port: 38017
    sharding:
      configDB: configReplSet/172.17.94.206:38018,172.17.94.206:38019,172.17.94.206:38020
    processManagement: 
      fork: true
    EOF

      4.3 启动mongos

     mongos -f /mongodb/38017/conf/mongos.conf 

     

    5. 分片集群添加节点

     连接到其中一个mongos(172.17.94.206),做以下配置
    (1)连接到mongs的admin数据库
    # su - mongod
    $ mongo 172.17.94.206:38017/admin
    (2)添加分片
    db.runCommand( { addshard : "sh1/172.17.94.206:38021,172.17.94.206:38022,172.17.94.206:38023",name:"shard1"} )
    db.runCommand( { addshard : "sh2/172.17.94.206:38024,172.17.94.206:38025,172.17.94.206:38026",name:"shard2"} )
    (3)列出分片
    mongos> db.runCommand( { listshards : 1 } )
    (4)整体状态查看
    mongos> sh.status();

    6.chunk的拆分和迁移

      

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 字符串逆序
    Java实现 蓝桥杯VIP 算法训练 字符串逆序
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 最长字符串
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Qt 自定义model实现文件系统的文件名排序
  • 原文地址:https://www.cnblogs.com/zmc60/p/13955505.html
Copyright © 2011-2022 走看看