MongoDB分片集群搭建

  • 系统架构图
    这里写图片描述
  • 准备12台机器
    10.202.12.178(主1)
    10.202.12.179(备1)
    10.202.12.180(主2)
    10.202.12.181(备2)
    10.202.12.182(主3)
    10.202.12.183(备3)
    10.202.12.184(主4)
    10.202.12.185(备4)
    10.202.12.186(仲裁1、路由1、配置1)
    10.202.12.189(仲裁2、路由2、配置2)
    10.202.12.192(仲裁3、路由3、配置3)
    10.202.12.194(仲裁4)
  • 分别在每台机器上建立mongodb分片对应测试文件夹
10.202.12.178上创建文件夹 
mkdir -p /app/mongo/shard1/master/{data,log,conf}
在10.202.12.179上创建文件夹 
mkdir -p /app/mongo/shard1/slave/{data,log,conf}

在10.202.12.180上创建文件夹 
mkdir -p /app/mongo/shard2/master/{data,log,conf}
在10.202.12.181上创建文件夹 
mkdir -p /app/mongo/shard2/slave/{data,log,conf}

在10.202.12.182上创建文件夹 
mkdir -p /app/mongo/shard3/master/{data,log,conf}
在10.202.12.183上创建文件夹 
mkdir -p /app/mongo/shard3/slave/{data,log,conf}

在10.202.12.184上创建文件夹 
mkdir -p /app/mongo/shard4/master/{data,log,conf}
在10.202.12.185上创建文件夹 
mkdir -p /app/mongo/shard4/slave/{data,log,conf}

在10.202.12.18610.202.12.18910.202.12.192上分别创建文件夹
mkdir -p /app/mongo/shard/mongos/{data,log,conf}
mkdir -p /app/mongo/shard/config/{data,log,conf}
mkdir -p /app/mongo/shard/arbiter/{data,log,conf}

在10.202.12.194上创建文件夹
mkdir -p /app/mongo/shard/arbiter/{data,log,conf}
  • 在10.202.12.186、10.202.12.189、10.202.12.192上分别启动配置服务器
./mongod  --configsvr  --dbpath  /app/mongo/shard/config/data 
--port 27019  --logpath  /app/mongo/shard/config/log/config.log  --fork
  • 在10.202.12.186、10.202.12.189、10.202.12.192上分别启动mongos服务器
./mongos  --configdb
10.202.12.186:27019,10.202.12.189:27019,10.202.12.192:27019
--port  27018   --logpath   /app/mongo/shard/mongos/log/mongos.log  --fork
  • 配置各个分片的副本集
vi /app/mongo/shard1/master/conf/mongod.conf(10.202.12.178)
#数据目录
dbpath=/app/mongo/shard1/master/data
#日志目录
logpath=/app/mongo/shard1/master/log/mongod.log
#日志以追加方式添加
logappend=true
#为每一个数据库按照数据库名建立文件夹存放
directoryperdb=true 
# 开启后台进程运行
fork = true
#IP
bind_ip=10.202.12.178
#端口
port = 27017
#副本集名称
replSet=shard1  
vi /app/mongo/shard1/slave/conf/mongod.conf(10.202.12.179)
#数据目录
dbpath=/app/mongo/shard1/slave/data
#日志目录
logpath=/app/mongo/shard1/slave/log/mongod.log
#日志以追加方式添加
logappend=true
#为每一个数据库按照数据库名建立文件夹存放
directoryperdb=true 
# 开启后台进程运行
fork = true
#IP
bind_ip=10.202.12.179
#端口
port = 27017
#副本集名称
replSet=shard1
vi /app/mongo/shard/arbiter/conf/mongod.conf(10.202.12.186)
#数据目录
dbpath=/app/mongo/shard/arbiter/data
#日志目录
logpath=/app/mongo/shard/arbiter/log/mongod.log
#日志以追加方式添加
logappend=true
#为每一个数据库按照数据库名建立文件夹存放
directoryperdb=true 
# 开启后台进程运行
fork = true
#IP
bind_ip=10.202.12.186
#端口
port = 27017
#副本集名称
replSet=shard1

其它三个分片的配置类似

  • 分别在每台机器上启动mongodb
 ./mongod -f /app/mongo/shard1/master/conf/mongod.conf
登陆10.202.12.178,连接mongodb
#设置第一个分片副本集
./mongo  10.202.12.178
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard1", members:[
                     {_id:0,host:"10.202.12.178:27017"},
                     {_id:1,host:"10.202.12.179:27017"},
                     {_id:2,host:"10.202.12.186:27017",arbiterOnly:true}
                ]
         }
#初始化副本集配置
rs.initiate(config);

其它三个分片类似

  • 配置路由服务器
    目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到 mongos 路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效
    #连接到mongos
./mongo  10.202.12.186:27018
#使用admin数据库
user admin
#串联路由服务器与分配副本集1
db.runCommand( { addshard : "shard1/10.202.12.178:27017,10.202.12.179:27017,10.202.12.186:27017"});
#串联路由服务器与分配副本集2
db.runCommand( { addshard : "shard2/10.202.12.180:27017,10.202.12.181:27017,10.202.12.189:27017"});
#串联路由服务器与分配副本集3
db.runCommand( { addshard : "shard3/10.202.12.182:27017,10.202.12.183:27017,10.202.12.192:27017"});
#串联路由服务器与分配副本集4
db.runCommand( { addshard : "shard4/10.202.12.184:27017,10.202.12.185:27017,10.202.12.194:27017"});
#查看分片服务器的配置
db.runCommand( { listshards : 1 } );
  • 配置分片规则
    目前配置服务、路由服务、分片服务、副本集服务都已经串联起来了,但我们的目的是希望插入数据,数据能够自动分片,连接在mongos上,准备让指定的数据库、指定的集合分片生效
指定countly数据库分片生效
db.runCommand( { enablesharding :"countly"});
指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "countly.user",key : {id: 1} } )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值