Mongodb分片集群部署

整体规划 

软件下载及环境变量配置

参考: Mongodb4.2+Centos7 liunx单机版部署

 修改文件目录

mv mongodb-linux-x86_64-rhel70-4.2.16 mongodb;
cd mongodb;

 配置Config节点

在三台机器上分别操作配置config节点:

mkdir -p config/data;
mkdir -p config/log;
touch  config/log/mongodb.log

进入 config目录

cd config;
touch config.conf;
vim config.conf

config.conf 文件中输入如下内容 

systemLog:
  destination: file
  logAppend: true
  path: /opt/software/mongodb4.2/mongodb/config/log/mongodb.log
storage:
  dbPath: /opt/software/mongodb4.2/mongodb/config/data
  journal:
    enabled: true
processManagement:
  fork: true  # 后台进程启动
net:
  port: 27019
  bindIp: 0.0.0.0 
sharding:
  clusterRole: configsvr
replication:
   replSetName: configs

启动config节点

mongod --config /opt/software/mongodb4.2/mongodb/config/config.conf

登录任一节点,初始化配置副本集

mongo 192.168.0.105:27019

 登录后输入如下内容

config = {_id: 'configs', members: [
                          {_id: 0, host: '192.168.0.105:27019'},
                          {_id: 1, host: '192.168.0.102:27019'},
                          {_id: 2, host: '192.168.0.108:27019'}]
           }

其中,"_id" : "configs"应与配置文件中配置的 replicaction.replSetName 一致 

输出如下结果:

初始化配置

rs.initiate(config)

 成功

配置shard1节点

在三台机器上分别操作配置shard1节点:

回到mongodb目录

​​mkdir -p shard1/data;
mkdir -p shard1/log;
touch  shard1/log/mongodb.log

进入shard1目录

cd shard1;
touch config.conf;
vim config.conf

config.conf 文件中输入如下内容 

systemLog:
  destination: file
  logAppend: true
  path: /opt/software/mongodb4.2/mongodb/shard1/log/mongodb.log
storage:
  dbPath: /opt/software/mongodb4.2/mongodb/shard1/data
  journal:
    enabled: true
processManagement:
  fork: true  # 后台进程启动
net:
  port: 27010
  bindIp: 0.0.0.0 
sharding:
  clusterRole: shardsvr
replication:
   replSetName: shard1

启动shard1节点

mongod --config /opt/software/mongodb4.2/mongodb/shard1/config.conf

 登录任一节点,初始化shard1副本集

mongo 192.168.0.105:27010

登录后输入如下内容:

config = {_id: 'shard1', members: [
                          {_id: 0, host: '192.168.0.105:27010'},
                          {_id: 1, host: '192.168.0.102:27010'},
                          {_id: 2, host: '192.168.0.108:27010'}]
           }

 输出如下结果:

初始化配置

rs.initiate(config)

 成功

配置shard2节点

在三台机器上分别操作配置shard2节点:

回到mongodb目录

​​mkdir -p shard2/data;
mkdir -p shard2/log;
touch  shard2/log/mongodb.log

进入shard2目录

cd shard2;
touch config.conf;
vim config.conf

config.conf 文件中输入如下内容 

systemLog:
  destination: file
  logAppend: true
  path: /opt/software/mongodb4.2/mongodb/shard2/log/mongodb.log
storage:
  dbPath: /opt/software/mongodb4.2/mongodb/shard2/data
  journal:
    enabled: true
processManagement:
  fork: true  # 后台进程启动
net:
  port: 27011
  bindIp: 0.0.0.0 
sharding:
  clusterRole: shardsvr
replication:
   replSetName: shard2

启动shard2节点

mongod --config /opt/software/mongodb4.2/mongodb/shard2/config.conf

 登录任一节点,初始化shard2副本集

mongo 192.168.0.105:27011

登录后输入如下内容:

config = {_id: 'shard2', members: [
                          {_id: 0, host: '192.168.0.105:27011'},
                          {_id: 1, host: '192.168.0.102:27011'},
                          {_id: 2, host: '192.168.0.108:27011'}]
           }

 输出如下结果:

初始化配置

rs.initiate(config)

 成功

 

配置shard3节点

 在三台机器上分别操作配置shard3节点:

回到mongodb目录

​mkdir -p shard3/data;
mkdir -p shard3/log;
touch  shard3/log/mongodb.log

进入shard3目录

cd shard3;
touch config.conf;
vim config.conf

config.conf 文件中输入如下内容 

systemLog:
  destination: file
  logAppend: true
  path: /opt/software/mongodb4.2/mongodb/shard3/log/mongodb.log
storage:
  dbPath: /opt/software/mongodb4.2/mongodb/shard3/data
  journal:
    enabled: true
processManagement:
  fork: true  # 后台进程启动
net:
  port: 27012
  bindIp: 0.0.0.0 
sharding:
  clusterRole: shardsvr
replication:
   replSetName: shard3

启动shard3节点

mongod --config /opt/software/mongodb4.2/mongodb/shard3/config.conf

 登录任一节点,初始化shard3副本集

mongo 192.168.0.105:27012

登录后输入如下内容:

config = {_id: 'shard3', members: [
                          {_id: 0, host: '192.168.0.105:27012'},
                          {_id: 1, host: '192.168.0.102:27012'},
                          {_id: 2, host: '192.168.0.108:27012'}]
           }

 输出如下结果:

初始化配置

rs.initiate(config)

 成功

 

配置mongos节点 

在三台机器上分别操作配置mongos节点:

回到mongodb目录

mkdir -p mongos/log;
touch  mongos/log/mongodb.log

进入mongos目录

cd mongos;
touch config.conf;
vim config.conf

config.conf 文件中输入如下内容 

systemLog:
  destination: file
  logAppend: true
  path: /opt/software/mongodb4.2/mongodb/mongos/log/mongodb.log
  #dbPath: /var/lib/mongo
processManagement:
  fork: true  # # 后台进程启动
net:
  port: 27017
  bindIp: 0.0.0.0  
#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字
sharding:
  configDB: configs/192.168.0.105:27019,192.168.0.102:27019,192.168.0.108:27019

启动mongos节点, 注意,此处是mongos命令,不是mogod

mongos --config /opt/software/mongodb4.2/mongodb/mongos/config.conf

 添加分片

以上搭建了配置服务器、路由服务器,分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。

片键是集合的一个键,MongoDB根据这个键拆分数据。例如,如果选择基于“user_id”进行分片,MongoDB会根据不同的user_id进行分片。选择片键可以认为是选择集合中数据的顺序。它与索引是个相似的概念:随着集合的不断增长,片键就会成为集合上最重要的索引。只有被索引过的键才能够作为片键.

连接任一路由服务器

mongo 192.168.0.105:27017

 使用admin数据库添加分片

sh.addShard("shard1/192.168.0.105:27010,192.168.0.102:27010,192.168.0.108:27010")
sh.addShard("shard2/192.168.0.105:27011,192.168.0.102:27011,192.168.0.108:27011")
sh.addShard("shard3/192.168.0.105:27012,192.168.0.102:27012,192.168.0.108:27012")

 

 查看集群状态

sh.status()

测试分片效果

chunksize默认大小为64M ,为了展示效果,修改默认配置为1M

use config
db.settings.save({ "_id" : "chunksize", "value" : 1 })

激活分片功能

 为test数据库开启分片,并指定一个集合users对其进行分片,选择一个片键user_id

sh.enableSharding("test")

sh.shardCollection("test.users", {user_id: 1})

 插入数据观察分片效果

use test;
for (var i = 1; i <= 100000; i++) db.users.save({user_id:i,username:"userName"+i});

 这里插入过程可能要等一小会

查看集合信息
db.users.stats();

查看分片信息

db.printShardingStatus() 或  sh.status()

更多详细信息:sh.status({"verbose":1}) 

 结束

       停止集群时先停止mongs,

        登录客户端执行如下命令

 mongo localhost:27017;

use admin;
db.shutdownServer();

         再停止其他节点        

mongod --shutdown --config /opt/software/mongodb4.2/mongodb/shard1/config.conf
mongod --shutdown --config /opt/software/mongodb4.2/mongodb/shard2/config.conf
mongod --shutdown --config /opt/software/mongodb4.2/mongodb/shard3/config.conf
mongod --shutdown --config /opt/software/mongodb4.2/mongodb/config/config.conf

        重新启动,先启动config节点,再启动分片节点,最后启动mongos 节点

mongod --config /opt/software/mongodb4.2/mongodb/config/config.conf
mongod --config /opt/software/mongodb4.2/mongodb/shard1/config.conf
mongod --config /opt/software/mongodb4.2/mongodb/shard2/config.conf
mongod --config /opt/software/mongodb4.2/mongodb/shard3/config.conf
mongos --config /opt/software/mongodb4.2/mongodb/mongos/config.conf

        至此,Mongodb分片集群搭建完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值