mongodb分片集群搭建

1. 环境准备

系统:CentOs7.6
安装包:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz

安装规划
三台服务器
of-ad-dev-001
of-ad-dev-002
of-ad-dev-003

服务器1服务器2服务器3
mongosmongosmongos
config serverconfig serverconfig server
shard server1shard server1 副本shard server1 副本
shard server2shard server2 副本shard server2 副本
shard server3shard server3 副本shard server3 副本

端口分配

mongos:20000
config:20001
shard1:27001
shard2:27002
shard3:27003

创建相关目录

cd /home/edison/mongodb
mkdir -p mongos/log
mkdir -p config/data
mkdir -p config/log
mkdir -p shard1/data
mkdir -p shard1/log
mkdir -p shard2/data
mkdir -p shard2/log
mkdir -p shard3/data
mkdir -p shard3/log

配置环境变量

vim /etc/profile
##
export MONGODB_HOME=/home/edison/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
## 
source /etc/profile

输入版本号,则表示配置成功

mongod -v

2. 配置config server服务器

vi $MONGODB_HOME/conf/config.conf

## content
systemLog:
  destination: file
  logAppend: true
  path: /home/edison/mongodb/config/log/config.log
 
# Where and how to store data.
storage:
  dbPath: /home/edison/mongodb/config/data
  journal:
    enabled: true
# how the process runs
processManagement:
  fork: true
  pidFilePath: /home/edison/mongodb/config/log/configsrv.pid
 
# network interfaces
net:
  port: 20001
  bindIp: of-ad-dev-001
 
#operationProfiling:
replication:
    replSetName: config        

sharding:
    clusterRole: configsvr

分发包

scp -r ~/mongodb edison@of-ad-dev-002:~/
scp -r ~/mongodb edison@of-ad-dev-003:~/

注意修改配置文件中的服务器地址

启动config server(三台机器都得启动)

mongod --config $MONGODB_HOME/conf/config.conf

登陆任意一台,初始化配置副本集

# 连接
mongo of-ad-dev-001:20001

# config变量
config = {
  _id : "config",
  members : [
    {_id : 0, host : "of-ad-dev-001:20001" },
    {_id : 1, host : "of-ad-dev-002:20001" },
    {_id : 2, host : "of-ad-dev-003:20001" }
  ]
}
# 初始化副本集
rs.initiate(config)

# 查看分区状态
rs.status()

3. 配置第一个分片副本集

vi $MONGODB_HOME/conf/shard1.conf

#配置文件内容
# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /home/edison/mongodb/shard1/log/shard1.log
 
# Where and how to store data.
storage:
  dbPath: /home/edison/mongodb/shard1/data
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
       cacheSizeGB: 20

# how the process runs
processManagement:
  fork: true 
  pidFilePath: /home/edison/mongodb/shard1/log/shard1.pid
 
# network interfaces
net:
  port: 27001
  bindIp: of-ad-dev-001

#operationProfiling:
replication:
    replSetName: shard1
sharding:
    clusterRole: shardsvr

启动shard1 server(三台机器都得启动)

mongod --config $MONGODB_HOME/conf/shard1.conf

登陆任意一台服务器,初始化副本集

# 连接
mongo of-ad-dev-001:27001

# config变量
config = {
  _id : "shard1",
  members : [
    {_id : 0, host : "of-ad-dev-001:27001" },
    {_id : 1, host : "of-ad-dev-002:27001" },
    {_id : 2, host : "of-ad-dev-003:27001" }
  ]
}
# 初始化副本集
rs.initiate(config)

# 查看分区状态
rs.status()

4. 配置第二三个分片副本集

和第一个类似,注意修改端口和文件的位置即可

5. 配置路由服务器mongos

vi $MONGODB_HOME/conf/mongos.conf

systemLog:
  destination: file
  logAppend: true
  path: /home/edison/mongodb/mongos/log/mongos.log
processManagement:
  fork: true
 
# network interfaces
net:
  port: 20000
  bindIp: of-ad-dev-001
#监听的配置服务器,只能有1个或者3个 config为配置服务器的副本集名字
sharding:
   configDB: config/of-ad-dev-001:20001,of-ad-dev-002:20001,of-ad-dev-003:20001

需要注意的是configDB中的config和config server集群的名字一样
分发到另外2台机器,注意修改ip地址

scp -r ~/mongodb/conf/mongos.conf edison@of-ad-dev-002:~/mongodb/conf/mongos.conf
scp -r ~/mongodb/conf/mongos.conf edison@of-ad-dev-003:~/mongodb/conf/mongos.conf

启动(三台机器都得启动)

mongos -f $MONGODB_HOME/conf/mongos.conf

6. 启用分片

登陆任意一台mongos

mongo of-ad-dev-001:20000

#使用admin数据库
use  admin

#串联路由服务器与分配副本集
sh.addShard("shard1/of-ad-dev-001:27001,of-ad-dev-002:27001,of-ad-dev-003:27001")
sh.addShard("shard2/of-ad-dev-001:27002,of-ad-dev-002:27002,of-ad-dev-003:27002")
sh.addShard("shard3/of-ad-dev-001:27003,of-ad-dev-002:27003,of-ad-dev-003:27003")

#查看集群状态
sh.status()

配置分片规则,测试

假设对music数据库中的artists集合按照name键进行分片,首先对music数据库启用分片

db.runCommand( { enablesharding :"mbase"});

对数据库启用分片后,就可以使用shardCollection()命令对集合分片了

db.runCommand( { shardcollection : "mbase.weibo_status",key : {date: 1} } );
user mbase

db.weibo_status.save({date:2017});
db.weibo_status.save({date:2018});
db.weibo_status.save({date:2019});

db.weibo_status.stats();

安全

mongodb分片集群开启安全策略
https://blog.csdn.net/zzti_erlie/article/details/90765447

参考博客

[1]www.ityouknow.com/mongodb/2017/08/05/mongodb-cluster-setup.html
[2]http://www.ityouknow.com/mongodb/2017/08/16/install-mongodb-cluster.html
好文
[3]https://www.jianshu.com/p/e1855a1d38b7

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java识堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值