mongo分片集群

搭建mongodb测试集群。
环境:centos7.2,mongodb3.4
集群模式:一主三从4分片,三个config+ 三个mongos。后续会加隐藏节点。
ip端口划分如下:
再4台机器上分别安装mongodb
配置shard1,config,mongos,shard2,shard3,shard4.
 
以下下是配置文件
############################################config.conf#######################################################################
#config.conf
dbpath=/data/mongodb/config
logpath=/data/logs/mongodb/config.log
port=50000
pidfilepath=/data/logs/mongodb/config.pid
directoryperdb=true
logappend=true
fork=true
configsvr=true
journal=true
##mongo config的副本集名字,根据自己情况修改,对应要修改mongos.conf中的信息
replSet = configtest
##下面的配置需要等待配置完集群后,添加对应的用户和密码,重启时候再开启
#keyFile=/usr/local/mongodb/etc/keyfile
#clusterAuthMode=keyFile
#######################################mongos.conf ##############################################################################
##mongo config 对应的ip+端口,若config副本集名字更改需要对应更改信息
configdb=configtest/10.21.8.91:50000,10.21.8.92:50000,10.21.8.93:50000
logpath=/data/logs/mongodb/route.log
port=27017
pidfilepath=/data/logs/mongodb/route.pid
logappend=true
fork=true
#keyFile=/usr/local/mongodb/etc/keyfile
#clusterAuthMode=keyFile
##########################################shard1.conf######################################################################################
storage:
  ##shard根据自己情况修改名字  
  dbPath: "/data/mongodb/shard1"  
  indexBuildRetry: true
  journal:
     enabled: true
     commitIntervalMs: 30
  directoryPerDB: true
  syncPeriodSecs: 60
  engine: wiredTiger
  wiredTiger:
     engineConfig:
        cacheSizeGB: 16
        journalCompressor: zlib
        directoryForIndexes: true
     collectionConfig:
        blockCompressor: zlib
     indexConfig:
        prefixCompression: true
systemLog:
   destination: file
   ##shard对应上面的shard名字,统一修改
   path: "/data/logs/mongodb/shard1/access.log"
   logAppend: true
   timeStampFormat: iso8601-local
processManagement:
   fork: true
   ##shard对应上面的shard名字,统一修改
   pidFilePath: "/tmp/mongodb-shard1.pid"
net:
   port: 10000
replication:
  ##shard对应上面的shard名字,统一修改
  replSetName: shard1
##下面的配置需要等待配置完集群后,添加对应的用户和密码,重启时候再开启
#security:
  #keyFile: '/usr/local/mongodb/etc/keyfile'
  #clusterAuthMode: "keyFile"
  #authorization: disabled
##############################################shard2.conf#############################################################################################
storage:
  ##shard根据自己情况修改名字  
  dbPath: "/data/mongodb/shard2"  
  indexBuildRetry: true
  journal:
     enabled: true
     commitIntervalMs: 30
  directoryPerDB: true
  syncPeriodSecs: 60
  engine: wiredTiger
  wiredTiger:
     engineConfig:
        cacheSizeGB: 16
        journalCompressor: zlib
        directoryForIndexes: true
     collectionConfig:
        blockCompressor: zlib
     indexConfig:
        prefixCompression: true
systemLog:
   destination: file
   ##shard对应上面的shard名字,统一修改
   path: "/data/logs/mongodb/shard2/access.log"
   logAppend: true
   timeStampFormat: iso8601-local
processManagement:
   fork: true
   ##shard对应上面的shard名字,统一修改
   pidFilePath: "/tmp/mongodb-shard2.pid"
net:
   port: 20000
replication:
  ##shard对应上面的shard名字,统一修改
  replSetName: shard2
##下面的配置需要等待配置完集群后,添加对应的用户和密码,重启时候再开启
#security:
  #keyFile: '/usr/local/mongodb/etc/keyfile'
  #clusterAuthMode: "keyFile"
  #authorization: disabled
########################################shard3.conf##########################################################################################
storage:
  ##shard根据自己情况修改名字  
  dbPath: "/data/mongodb/shard3"  
  indexBuildRetry: true
  journal:
     enabled: true
     commitIntervalMs: 30
  directoryPerDB: true
  syncPeriodSecs: 60
  engine: wiredTiger
  wiredTiger:
     engineConfig:
        cacheSizeGB: 16
        journalCompressor: zlib
        directoryForIndexes: true
     collectionConfig:
        blockCompressor: zlib
     indexConfig:
        prefixCompression: true
systemLog:
   destination: file
   ##shard对应上面的shard名字,统一修改
   path: "/data/logs/mongodb/shard3/access.log"
   logAppend: true
   timeStampFormat: iso8601-local
processManagement:
   fork: true
   ##shard对应上面的shard名字,统一修改
   pidFilePath: "/tmp/mongodb-shard3.pid"
net:
   port: 30000
replication:
  ##shard对应上面的shard名字,统一修改
  replSetName: shard3
##下面的配置需要等待配置完集群后,添加对应的用户和密码,重启时候再开启
#security:
  #keyFile: '/usr/local/mongodb/etc/keyfile'
  #clusterAuthMode: "keyFile"
  #authorization: disabled
####################################################shard4.conf##########################################################################
storage:
  ##shard根据自己情况修改名字  
  dbPath: "/data/mongodb/shard4"  
  indexBuildRetry: true
  journal:
     enabled: true
     commitIntervalMs: 30
  directoryPerDB: true
  syncPeriodSecs: 60
  engine: wiredTiger
  wiredTiger:
     engineConfig:
        cacheSizeGB: 16
        journalCompressor: zlib
        directoryForIndexes: true
     collectionConfig:
        blockCompressor: zlib
     indexConfig:
        prefixCompression: true
systemLog:
   destination: file
   ##shard对应上面的shard名字,统一修改
   path: "/data/logs/mongodb/shard4/access.log"
   logAppend: true
   timeStampFormat: iso8601-local
processManagement:
   fork: true
   ##shard对应上面的shard名字,统一修改
   pidFilePath: "/tmp/mongodb-shard4.pid"
net:
   port: 40000
replication:
  ##shard对应上面的shard名字,统一修改
  replSetName: shard4
##下面的配置需要等待配置完集群后,添加对应的用户和密码,重启时候再开启
#security:
  #keyFile: '/usr/local/mongodb/etc/keyfile'
  #clusterAuthMode: "keyFile"
  #authorization: disabled
#############################################################################################################################################
启动各个进程
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/config.conf
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/shard1.conf --shardsvr
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/shard2.conf --shardsvr
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/shard3.conf --shardsvr
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/shard4.conf --shardsvr
/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/etc/mongos.conf
##################################################################################################################################################
配置config副本集
 
mongo --port 50000
> use admin
>configtest = {_id :"configtest",members:[{_id:1,host:"10.21.8.91:50000"},{_id:2,host:"10.21.8.92:50000"},{_id:3,host:"10.21.8.93:50000"}]}
> rs.initiate(configtest)
> rs.status()
##########################################################################################################################################
配置分片
mongo --port 10000
use admin
config = {_id:"shard1",members:[{_id:0,host:"10.21.8.90:10000"},{_id:1,host:"10.21.8.91:10000"},{_id:2,host:"10.21.8.92:10000"},{_id:3,host:"10.21.8.93:10000"}]}
rs.initiate(config)
rs.status()
 
mongo --port 20000
use admin
config = {_id:"shard2",members:[{_id:0,host:"10.21.8.90:20000"},{_id:1,host:"10.21.8.91:20000"},{_id:2,host:"10.21.8.92:20000"},{_id:3,host:"10.21.8.93:20000"}]}
rs.initiate(config)
rs.status()
 
mongo --port 30000
use admin
config = {_id:"shard3",members:[{_id:0,host:"10.21.8.90:30000"},{_id:1,host:"10.21.8.91:30000"},{_id:2,host:"10.21.8.92:30000"},{_id:3,host:"10.21.8.93:30000"}]}
rs.initiate(config)
rs.status()
 
mongo --port 40000
use admin
config = {_id:"shard4",members:[{_id:0,host:"10.21.8.90:40000"},{_id:1,host:"10.21.8.91:40000"},{_id:2,host:"10.21.8.92:40000"},{_id:3,host:"10.21.8.93:40000"}]}
rs.initiate(config)
rs.status()
#########################################################################################################################################
配置mongos
mongo --port 27017
use admin
sh.addShard("shard1/10.21.8.90:10000,10.21.8.91:10000,10.21.8.92:10000,10.21.8.93:10000")
sh.addShard("shard2/10.21.8.90:20000,10.21.8.91:20000,10.21.8.92:20000,10.21.8.93:20000")
sh.addShard("shard3/10.21.8.90:30000,10.21.8.91:30000,10.21.8.92:30000,10.21.8.93:30000")
sh.addShard("shard4/10.21.8.90:40000,10.21.8.91:40000,10.21.8.92:40000,10.21.8.93:40000")
sh.status()
#############################################################################################################################################
测试,开启分片
以下内容来自:https://blog.csdn.net/pittpakk/article/details/79385561
 
指定testdb分片生效(必须在admin执行)
db.runCommand({enablesharding :"testdb"});
指定数据库里需要分片的集合和片键,哈希id 分片
db.runCommand( { shardcollection : "testdb.table1",key : {"id": "hashed"} } );
 
我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!
 
use  testdb;
for(i=1;i<=100000;i++){db.table1.insert({"id":i,"name":"penglei"})};
 
db.table1.aggregate([{$group : {_id : "$name", totle : {$sum : 1}}}])
db.table1.stats();
sh.status()
 
use testdb
 
 
 
db.table1.aggregate([{$group : {_id : "$name", totle : {$sum : 1}}}])
 
#############################################################################################################
添加认证
use admin
db.createUser({user:"root",pwd:"rootpwd",roles:[{role:"root",db:"admin"}]})
mongo --port 30000 -u "root" -p "rootpwd" --authenticationDatabase admin
 
############################################################################################################
 
添加keyfile文件
openssl rand -base64 753 > keyfile
chmod 600 keyfile
把配置文件里得取消注释
keyFile=/usr/local/mongodb/etc/keyfile
clusterAuthMode=keyFile
 
重启集群,config,shard ,mongos  顺序。
 
 
#####################################################################################################################
移除分片,执行两次
db.runCommand({'removeshard':'shard1'})
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/han1094/p/10183316.html
今日推荐