首页 > 学院 > 开发设计 > 正文

MongoDB分片集群搭建

2019-11-08 20:44:31
字体:
来源:转载
供稿:网友
系统架构图 这里写图片描述准备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.186、10.202.12.189、10.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 --configdb10.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#ipbind_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#IPbind_ip=10.202.12.179#端口port = 27017#副本集名称replSet=shard1vi /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#IPbind_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#串联路由服务器与分配副本集1db.runCommand( { addshard : "shard1/10.202.12.178:27017,10.202.12.179:27017,10.202.12.186:27017"});#串联路由服务器与分配副本集2db.runCommand( { addshard : "shard2/10.202.12.180:27017,10.202.12.181:27017,10.202.12.189:27017"});#串联路由服务器与分配副本集3db.runCommand( { addshard : "shard3/10.202.12.182:27017,10.202.12.183:27017,10.202.12.192:27017"});#串联路由服务器与分配副本集4db.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} } )
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表