服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - 如何为MongoDB添加分片副本集

如何为MongoDB添加分片副本集

2021-05-09 21:03AsiaYe MongoDB

这篇文章主要介绍了如何为MongoDB添加分片副本集,帮助大家更好的理解和学习使用MongoDB数据库,感兴趣的朋友可以了解下

   背景是这样的:线上一个mongodb集群保存了很多历史数据,这些历史数据是按照时间字段进行分片的,最近到了2021年,有些分片的截止时间要到了,为了能容纳更多的数据,需要在当前分片的基础上增加相应的分片。

   线上环境中,每个分片本身也是一个3副本的副本集,所以添加的时候有些特定的流程需要注意,我再测试环境中简单测了一下这个过程,记录下来。

    整个过程大概的流程是:

1、新建分片副本集

2、使用addshard命令将分片副本集添加到集群中

3、使用addshardtag命令为分片打标签

4、使用addtagrange命令为打好标签的分片设置片键的数值区间,注意,各个分片的数值区间不能有重复。

   目前测试环境的架构是:

如何为MongoDB添加分片副本集

01 新建副本集

   由于我们即将加入集群的分片是一个副本集,因此,需要提前将这个副本集创建好,创建的过程相对比较容易,按照之前的步骤来进行搭建,这里给出链接:

mongodb 副本集的搭建

02 副本集添加到已有的集群中(addshard)

   这一步也比较简单,可以直接在mongos上的admin数据库使用命令addshard即可:

当然,你也可以直接使用db.admincommand命令来代替db.runcommand命令,这两个命令的区别是admincommand命令默认是在admin数据库下面执行的,而runcommand默认的是当前数据库。

上面的命令,将本地的:

27024、27025、27026端口加入到集群中。到这里架构会变成:

如何为MongoDB添加分片副本集

03 添加分片时间标签(addshardtag)

     分片加入到集群之后,还需要对分片添加tag,添加tag的目的,是让我们知道,当前分片上保留的业务数据是哪一个时间段的。在测试环境中,我使用1_1000和1000_2000这两个tag来测试,命令如下:

对上面的命令简单进行解释,其中:

sharding_yeyz和sharding_yeyz1是分片副本集的名称;

1_1000和1000_2000是tag的名称。

添加完毕之后,我们可以通过系统的config库下面的tag表看到tag的情况,如下:

04 给打好的标签添加具体的数值范围(addtagrange)

   设定好标签之后,需要设置每个标签所代表的分片上具体的数值范围,这就要用到addtagrange函数,使用方法如下:

注意,这里数值范围是指分片的那个集合的片键的数值范围。

分片永远是针对集合说的。

上面的命令是说,我们对数据库new下面的test集合做了分片,它的片键值是number这个字段:

当number属于[1,1000)的时候,该文档存放在tag是"1_1000"的这个分片上,也就是sharding_yeyz;

当number属于[1000,2000)的时候,该文档存放在tag是"1000_2000"的这个分片上,也就是sharding_yeyz1;

注意,区间为左闭右开。

05 查看结果

    添加分片并设置分片的数值范围之后,我们可以使用:

db.printshardingstatus()命令或者sh.status()命令来查看当前集群中的分片情况:

到了这里,我们开始验证最终的结果,先通过下面的命令生成一组测试数据,如下:

去查看每个分片上的内容,可以发现:

sharding_yeyz

    这里需要注意,为什么2000这个值还是出现在分片一上呢?

这个原因是在设置分片的数值范围的时候,我们设置的区间是左闭右开的。而我们设置的分片范围分别是[1,1000)和[1000,2000),因此2000这个数字就被随机分配到这两个分片中,实际的情况是,它被分配到了分片一中。

sharding_yeyz1

这个结果看着就比较正常了。

今天的内容就到这里吧。

以上就是如何为mongodb添加分片副本集的详细内容,更多关于为mongodb添加分片副本集的资料请关注服务器之家其它相关文章!

原文链接:https://cloud.tencent.com/developer/article/1778810

延伸 · 阅读

精彩推荐
  • MongoDBMongoDB简单操作示例【连接、增删改查等】

    MongoDB简单操作示例【连接、增删改查等】

    这篇文章主要介绍了MongoDB简单操作,涉及命令行窗口下使用MongoDB进行简单的连接、增删改查等相关操作技巧,需要的朋友可以参考下 ...

    tinyphp2982020-05-23
  • MongoDBMongoDB分片测试

    MongoDB分片测试

    分片是mongoDB扩展的一种方式。分片分割一个collection并将不同的部分存储在不同的机器上,本文给大家介绍MongoDB分片测试,需要的朋友参考下吧 ...

    我思,故我在5532020-05-05
  • MongoDBMongodb如何开启用户访问控制详解

    Mongodb如何开启用户访问控制详解

    默认启动 MongoDB 服务时没有任何参数,可以对数据库任意操 作,而且可以远程访问数据库,所以推荐开发阶段可以不设置任何参数,但对于生产环境还是要...

    不争5402020-05-10
  • MongoDBMongoDB 学习笔记

    MongoDB 学习笔记

    最近在学习MongoDB,小结一下,主要都是一些基础知识,需要的朋友可以参考下 ...

    服务器之家3412020-04-25
  • MongoDBMongo服务重启异常问题的处理方法

    Mongo服务重启异常问题的处理方法

    这篇文章主要给大家介绍了关于Mongo服务重启异常问题的处理方法,这个问题其实还是挺常见的,通过此文学习处理方法,以后遇到了就不会措手不及的,需要的...

    Leafage11842021-08-24
  • MongoDBMongodb数据库误删后的恢复方法(两种)

    Mongodb数据库误删后的恢复方法(两种)

    本文给大家分享两种方法来实现Mongodb数据库误删后的恢复,每种方法给大家介绍的都非常详细,需要的朋友参考下吧 ...

    fyg05249922020-05-18
  • MongoDB将MongoDB加入到Windows的本地服务项的方法

    将MongoDB加入到Windows的本地服务项的方法

    下面主要针对MongoDB在Windows下加入本地服务项做一些简单的分享。以方便刚接触MongoDB并在Windows环境下进行开发的同学 ...

    MongoDB教程网3012020-04-28
  • MongoDBMongoDB 简单入门教程(安装、基本概念、创建用户)

    MongoDB 简单入门教程(安装、基本概念、创建用户)

    这篇文章主要介绍了MongoDB 简单入门教程(安装、基本概念、创建用户)的相关资料,帮助大家更好的理解和学习使用MongoDB数据库,感兴趣的朋友可以了解下...

    AsiaYe6352021-05-10