mongodb-shard cluster

发布时间 2023-06-26 22:53:46作者: 原来是你~~~
1、shard cluster 搭建及规划

10个实例端口:38017-38026

  • configserver:3台构成的复制集(1主两从,不支持arbiter)38018-38020

  • shard节点:
    sh1:38021-23 (1主两从,复制集名字sh1)
    sh2:38024-26 (1主两从,复制集名字sh2)

  • mongos
    mongos:38017

2、搭建 shard 节点

规划创建安装路径

$ mkdir -p /mongodb/38021/{conf,log,data}
$ mkdir -p /mongodb/38022/{conf,log,data}
$ mkdir -p /mongodb/38023/{conf,log,data}
$ mkdir -p /mongodb/38024/{conf,log,data}
$ mkdir -p /mongodb/38025/{conf,log,data}
$ mkdir -p /mongodb/38026/{conf,log,data}

编辑配置文件

$ vim /mongodb/38021/conf/mongodb.conf
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: 0.0.0.0
  port: 38021
replication:
  oplogSizeMB: 2048
  replSetName: sh1
sharding:
  clusterRole: shardsvr
processManagement:
  fork: true

$ cp /mongodb/38021/conf/mongodb.conf /mongodb/38022/conf
$ cp /mongodb/38021/conf/mongodb.conf /mongodb/38023/conf
$ sed -i 's/38021/38022/g' /mongodb/38022/conf/mongodb.conf 
$ sed -i 's/38021/38023/g' /mongodb/38023/conf/mongodb.conf 
$ vim /mongodb/38024/conf/mongodb.conf
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: 0.0.0.0
  port: 38024
replication:
  oplogSizeMB: 2048
  replSetName: sh2
sharding:
  clusterRole: shardsvr
processManagement:
  fork: true

$ cp /mongodb/38024/conf/mongodb.conf /mongodb/38025/conf/
$ cp /mongodb/38024/conf/mongodb.conf /mongodb/38026/conf/
$ sed -i 's/38024/38025/g' /mongodb/38025/conf/mongodb.conf 
$ sed -i 's/38024/38026/g' /mongodb/38026/conf/mongodb.conf 

启动 mongodb

$ mongod -f /mongodb/38021/conf/mongodb.conf 
$ mongod -f /mongodb/38022/conf/mongodb.conf 
$ mongod -f /mongodb/38023/conf/mongodb.conf 
$ mondod -f /mongodb/38024/conf/mongodb.conf 
$ mongod -f /mongodb/38025/conf/mongodb.conf 
$ mongod -f /mongodb/38026/conf/mongodb.conf 

配置复制集

$ mongo --port 38021
> config={_id:'sh2',members:[{_id:0,host:'192.168.3.105:38024'},{_id:1,host:'192.168.3.105:38025'},{_id:2,host:'192.168.3.105:38026'}]}
> rs.initiate(config)

$ mongo --port 38024
> config={_id:'sh2',members:[{_id:0,host:'192.168.3.105:38024'},{_id:1,host:'192.168.3.105:38025'},{_id:2,host:'192.168.3.105:38026'}]}
> rs.initiate(config)
3、搭建 config 节点
$ mkdir -p /mongodb/38018/{conf,log,data}
$ mkdir -p /mongodb/38019/{conf,log,data}
$ mkdir -p /mongodb/38020/{conf,log,data}
$ vi /mongodb/38018/conf/mongodb.conf
systemLog:
  destination: file
  path: /mongodb/38018/log/mongodb.conf
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /mongodb/38018/data
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
net:
  bindIp: 0.0.0.0
  port: 38018
replication:
  oplogSizeMB: 2048
  replSetName: configReplSet
sharding:
  clusterRole: configsvr
processManagement:
  fork: true

$ cp /mongodb/38018/conf/mongodb.conf /mongodb/38019/conf/
$ cp /mongodb/38018/conf/mongodb.conf /mongodb/38020/conf/
$ sed -i 's/38018/38019/g' /mongodb/38019/conf/mongodb.conf 
$ sed -i 's/38018/38020/g' /mongodb/38020/conf/mongodb.conf 
$ mondod -f /mongodb/38018/conf/mongodb.conf  
$ mongod -f /mongodb/38019/conf/mongodb.conf 
$ mongod -f /mongodb/38020/conf/mongodb.conf 
$ mongo --port 38018
> config={_id:'configReplSet',members:[{_id:0,host:'192.168.3.105:38018'},{_id:1,host:'192.168.3.105:38019'},{_id:2,host:'192.168.3.105:38020'}]}
> rs.initiate(config)

4、mongos节点配置
$ mkdir /mongodb/38017/{conf,log} -p
$ vim /mongodb/38017/conf/mongos.conf
systemLog:
  destination: file
  path: /mongodb/38017/log/mongos.log
  logAppend: true
net:
  bindIp: 0.0.0.0
  port: 38017
sharding:
  configDB: configReplSet/192.168.3.105:38018,192.168.3.105:38019,192.168.3.105:38020
processManagement:
  fork: true

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