基于mongoDB创建副本集与分片集群

1. 副本集的实现

1.准备工作

(1)在系统环境变量中配置mongodb的bin目录的环境变量;

(2)安装python环境(必须是3.7,3.8,3.9及以上版本);

(3)在python环境上导入如下依赖:pip3 install python -dateutil

                                                                pip3 install psutil pymongo

                                                                pip3 install mtools(安装mtools工具)

mtools工具:是一套基于python实现的MongoDB工具集,其包括MongoDB日志分析,报表生成及简易的数据库安装等功能,其包含mlaunch组件它支持快速搭建本地测试环境,可以是单机,副本集,分片集群

2.副本集搭建

(1)在命令窗口建立副本集搭建目录并进入该目录: 

(2)输入如下命令自动创建一个副本集(包含3个节点):mlaunch init --replicaset nodes 3

(3)通过命令mongo –port 27017进入端口为27017的节点,此时副本集会默认该节点为主节点,其余为从节点。

 

此时可以通过rs.status()来查看副本集的状态信息:

 

 

 

(4)在idea进行相关配置

代码:

spring.data.mongodb.uri=mongodb://localhost:27017,localhost:27018,localhost:27019/demo?connect=replicaSet&slaveOk=true&replicaSet=replset

 

(5)在MongoDBCompass工具进行相关配置:

  

 

    

 

配置成功:

 

(6)测试:(1.从节点对主节点数据的复制;2.模拟主节点宕机情形)

     从节点对主节点数据的复制:

      主节点插入一条数据:

    

 

    另外开启一个cmd窗口通过mongo –port 27018命令打开端口为27018的从节点:

    

 

    

     MongoDBCompass工具上查看结果:

    

 

    模拟主节点宕机情形:

     关闭主节点端口号进程:

     (电脑已崩,换个副本集测试,端口号为40000,40001,40002,主节点为40000)

      此时主节点为40000:

 

   关闭40000端口服务再打开:发现40000端口变成从节点,40001端口晋升成主节点:

 

数据备份到40001端口的新主节点:

  

 

(7)其它操作:(将一个从节点改为仲裁节点)

     rs.remove(“localhost:27019”):从副本集移除该节点

     rs.addArb(“localhost:27019”):添加该节点为仲裁节点

     补充:rs.add(“主机名:端口号”):天界该节点为从节点

    

     

 

 

   转变成功:

  

 

  

2. 分片集群的实现

(一句代码轻松创建一个分片集群)

注:前期准备工作与副本集搭建操作一致。

(1)分片集群搭建流程:

   建立一个目录存放分片相关的数据集并切换到该目录下:

 

 

通过如下命令实现分片集群的创建,共包括两个副本集(6个节点),3个配置节点,3个路由节点:(共12个节点)

命令:mlaunch init –sharded 2 –replicaset –node 3 –config 3 –csrs –mongos 3 –port 27050 --noauth

 

通过mlaunch list命令检查分片实例:

 

通过命令mlaunch list –startup命令可查看分片集群相关信息(进程号,状态,节点路径等):

 

通过mlaunch list –tags命令可以查看分片集群的标签:

 

(2)分片相关操作:

通过mongo –port 27050命令进入第一个路由节点进行相关集群配置:

 

加入第一和第二个副本集的命令:(忘了截图)

sh.addShard(“shard01/localhost:27053, localhost:27054, localhost:27055”)

sh.addShard(“shard02/localhost:27056, localhost:27057, localhost:27058”)

通过sh.status()命令查看该集群的状态:(注意是sh,副本集是rs开头)

 

(3)分片策略(哈希策略 | 范围策略)

  哈希策略:mongodb计算一个字段的哈希值,一定范围的哈希值形成一个数据块

使用sh.shardCollection(“articledb”)命令初始化数据库:(忘记截下运行结果)

再使用sh.shardCollection(“articled.comment”,{“nickname”:”hashed”})命令进行分片操作,(上述命令使用nickname作为片键)

分片结果如下:(sh.status命令查看)

 

哈希分片小测试:(结果比较直观)

方案:在27050端口的路由节点中插入一千条数据,然后分别在副本集1和2中查看数据条数。

 

路由节点的数据条数:

 

副本集1的数据条数:507

 

副本集1的数据条数:493

 

范围策略分片

Mongodb按照片键的范围把数据分成不同部分,(假设有一个数字的片键,想象一个从负无穷到正无穷的直线,每一个片键是直线上的一点,Mongodb把这条直线划分为更短的不重叠的片段,并称之为数据块,每个数据块包含了片键在一定范围内的数据。)

如下使用年龄作为片键,按照点赞数的值进行分片:

命令:sh.shardCollection(“articled.author”,{“age”:1}

 

查看分片结果:

 

其它一些相关命令的操作:

启动服务:mlaunch start

关闭服务:mlaunch stop

退出当前端口操作:exit

杀死进程:taskkill /pid 进程号 /F

清除代码:cls

THANK YOU!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值