mongDB复制集+分片搭建

在这里插入图片描述
集群规划:
有三个复制集 每个复制集有一个路由节点,配置节点,三个分片
(主节点,从节点,仲裁节点)
*****仲裁节点只能选举,不能参与实际的分片
一共有33+32=15个
数据分为3个片,每个片都是一个复制集,分别为shard1,shard2,shard3

  1. 建立存放mongodb的数据文件
    sudo mkdir -p /data/mongodbtest1
    sudo mkdir -p /data/mongodbtest2
    sudo mkdir -p /data/mongodbtest3
  1. 为mongos、config、shard1、shard2、shard3建立目录,
    用来存放数据和日志文件(mongos路由服务器不存储数据,只需建立日志文件)
#/data/mongodbtest1文件目录
sudo mkdir -p /data/mongodbtest1/mongos/log

sudo mkdir -p /data/mongodbtest1/config/data
sudo mkdir -p /data/mongodbtest1/config/log

sudo mkdir -p /data/mongodbtest1/shard11/data
sudo mkdir -p /data/mongodbtest1/shard11/log

sudo mkdir -p /data/mongodbtest1/shard12/data
sudo mkdir -p /data/mongodbtest1/shard12/log

sudo mkdir -p /data/mongodbtest1/shard13/data
sudo mkdir -p /data/mongodbtest1/shard13/log

#/data/mongodbtest2文件目录
sudo mkdir -p /data/mongodbtest2/mongos/log

sudo mkdir -p /data/mongodbtest2/config/data
sudo mkdir -p /data/mongodbtest2/config/log

sudo mkdir -p /data/mongodbtest2/shard21/data
sudo mkdir -p /data/mongodbtest2/shard21/log

sudo mkdir -p /data/mongodbtest2/shard22/data
sudo mkdir -p /data/mongodbtest2/shard22/log

sudo mkdir -p /data/mongodbtest2/shard23/data
sudo mkdir -p /data/mongodbtest2/shard23/log

#/data/mongodbtest3文件目录
sudo mkdir -p /data/mongodbtest3/mongos/log

sudo mkdir -p /data/mongodbtest3/config/data
sudo mkdir -p /data/mongodbtest3/config/log

sudo mkdir -p /data/mongodbtest3/shard31/data
sudo mkdir -p /data/mongodbtest3/shard31/log

sudo mkdir -p /data/mongodbtest3/shard32/data
sudo mkdir -p /data/mongodbtest3/shard32/log

sudo mkdir -p /data/mongodbtest3/shard33/data
sudo mkdir -p /data/mongodbtest3/shard33/log

在这里插入图片描述

3 启动配置服务器,端口设置为:10001,20001,30001

sudo /usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodbtest1/config/data --port 10001 --logpath /data/mongodbtest1/config/log/config.log --fork 

sudo /usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodbtest2/config/data --port 20001 --logpath /data/mongodbtest2/config/log/config.log --fork 

sudo /usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodbtest3/config/data --port 30001 --logpath /data/mongodbtest3/config/log/config.log --fork 

在这里插入图片描述
在这里插入图片描述

4 启动mongos路由服务器,端口设置为:10002,20002,30002

sudo /usr/local/mongodb/bin/mongos --configdb localhost:10001,localhost:20001,localhost:30001 --port 10002 --logpath /data/mongodbtest1/mongos/log/mongos.log --fork 

sudo /usr/local/mongodb/bin/mongos --configdb localhost:10001,localhost:20001,localhost:30001 --port 20002 --logpath /data/mongodbtest2/mongos/log/mongos.log --fork 

sudo /usr/local/mongodb/bin/mongos --configdb localhost:10001,localhost:20001,localhost:30001 --port 30002 --logpath /data/mongodbtest3/mongos/log/mongos.log --fork 

在这里插入图片描述在这里插入图片描述

5 分别启动各个复制集的分片shard1,shard2,shard3

#shard1,端口号分别为10003,10004,10005
sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard1 --dbpath /data/mongodbtest1/shard11/data  --logpath /data/mongodbtest1/shard11/log/shard1.log --port 10003 --oplogSize 1024 --fork 


sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard1 --dbpath /data/mongodbtest1/shard12/data  --logpath /data/mongodbtest1/shard12/log/shard2.log --port 10004 --oplogSize 1024 --fork

sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard1 --dbpath /data/mongodbtest1/shard13/data  --logpath /data/mongodbtest1/shard13/log/shard3.log --port 10005 --oplogSize 1024 --fork

在这里插入图片描述
在这里插入图片描述

#shard2,端口号分别为20003,20004,20005
sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard2 --dbpath /data/mongodbtest2/shard21/data  --logpath /data/mongodbtest2/shard21/log/shard1.log --port 20003 --oplogSize 1024 --fork 

sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard2 --dbpath /data/mongodbtest2/shard22/data  --logpath /data/mongodbtest2/shard22/log/shard2.log --port 20004 --oplogSize 1024 --fork

sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard2 --dbpath /data/mongodbtest2/shard23/data  --logpath /data/mongodbtest2/shard23/log/shard3.log --port 20005 --oplogSize 1024 --fork

在这里插入图片描述

#shard3,端口号分别为30003,30004,30005
sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard3 --dbpath /data/mongodbtest3/shard31/data  --logpath /data/mongodbtest3/shard31/log/shard1.log --port 30003 --oplogSize 1024 --fork 

sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard3 --dbpath /data/mongodbtest3/shard32/data  --logpath /data/mongodbtest3/shard32/log/shard2.log --port 30004 --oplogSize 1024 --fork

sudo /usr/local/mongodb/bin/mongod --shardsvr --replSet shard3 --dbpath /data/mongodbtest3/shard33/data  --logpath /data/mongodbtest3/shard33/log/shard3.log --port 30005 --oplogSize 1024 --fork

在这里插入图片描述

6 查看mongod进程:ps -aux |grep mongod

在这里插入图片描述
在这里插入图片描述

7 添加复制集

登录localhost:10003 设置shard1复制集
sudo /usr/local/mongodb/bin/mongo localhost:10003

config = { _id:"shard1", members:[
            {_id:0,host:"localhost:10003"},
            {_id:1,host:"localhost:10004"},
            {_id:2,host:"localhost:10005",arbiterOnly:true}
        ]
    }
rs.initiate(config);

在这里插入图片描述
在这里插入图片描述

登录localhost:20003 设置shard2复制集
sudo /usr/local/mongodb/bin/mongo localhost:20003
use admin
config = { _id:"shard2", members:[
            {_id:0,host:"localhost:20003"},
            {_id:1,host:"localhost:20004"},
            {_id:2,host:"localhost:20005",arbiterOnly:true}
        ]
         }
rs.initiate(config);

在这里插入图片描述
在这里插入图片描述

登录localhost:30003 设置shard3复制集
---
sudo /usr/local/mongodb/bin/mongo localhost:30003
use admin
config = { _id:"shard3", members:[
            {_id:0,host:"localhost:30003"},
            {_id:1,host:"localhost:30004"},
            {_id:2,host:"localhost:30005",arbiterOnly:true}
        ]
         }
rs.initiate(config);
---
* 分别查看复制集配置结果
shard1
shard2
shard3

在这里插入图片描述
在这里插入图片描述

8串联路由服务器:

连接任一台路由服务器:
sudo /usr/local/mongodb/bin/mongo localhost:10002 

在这里插入图片描述

串联路由服务器并配置复制集

use admin
db.runCommand( { addshard : "shard1/localhost:10003,localhost:10004,localhost:10005"});

db.runCommand( { addshard : "shard2/localhost:20003,localhost:20004,localhost:20005"});

db.runCommand( { addshard : "shard3/localhost:30003,localhost:30004,localhost:30005"});

在这里插入图片描述

查看分片服务器的配置
db.runCommand( { listshards : 1 } );

在这里插入图片描述

---仲裁节点不会显示

指定test集合使分片生效

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

在这里插入图片描述

对test数据库的某一个集合进行分片,片键采用Hash片键(散列分布)

在这里插入图片描述

db.runCommand({shardcollection:"test.userinfo",key:{"_id": "hashed"}})

9 测试分片结果

连接mongos服务器 
sudo /usr/local/mongodb/bin/mongo localhost:10002 

在这里插入图片描述

插入数据

在这里插入图片描述在这里插入图片描述

use test
for(var i=0;i<100000;i++){db.userinfo.insert({"username":"user"+i});} 
查看分片情况:
db.userinfo.stats();

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看集群状态:
(查看每个片有两个块):
sh.status();

在这里插入图片描述

查看插入的数据在分片的结果:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

启动shard1分片10003

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动shard1分片2  10004

在这里插入图片描述

启动shard1分片3  10005

在这里插入图片描述

启动shard2分片1   20003

在这里插入图片描述

启动shard2分片2  20004

在这里插入图片描述

启动shard2分片3  20005

在这里插入图片描述

启动shard3分片1  30003

在这里插入图片描述

启动shard3分片2   30004

在这里插入图片描述

启动shard3分片3  30005

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值