广告
返回顶部
首页 > 资讯 > 精选 >MongoDB主分片(primary shard)指的是什么
  • 555
分享到

MongoDB主分片(primary shard)指的是什么

2023-06-14 08:06:36 555人浏览 独家记忆
摘要

小编给大家分享一下MongoDB主分片(primary shard)指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!01 主分片是什么?  分片

小编给大家分享一下MongoDB主分片(primary shard)指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

01 主分片是什么?

  分片集群中的每一个数据库都有一个主分片,这个主分片上保存了当前数据库中没有被分片的集合的数据,主分片(primary shard)和主节点(primary)之间没有任何关联。

   主分片是由monGos选择出来的,选择的依据是每当创建新数据库的时候,mongos会从集群中选择包含数据最少的分片作为新数据库的主分片。具体的选择方式是:

选择listDatabase命令返回的totalSize字段作为选择的准则。如下:

mongos> db.adminCommand("listDatabases"){  "databases" : [    {      xxxx    },    {      xxxx    },    {      xxxx    }  ],  "totalSize" : 2842624,  "totalSizeMb" : 2,  "ok" : 1,  "operationTime" : Timestamp(1610982469, 1),  "$clusterTime" : {    "clusterTime" : Timestamp(1610982469, 1),    "signature" : {      "hash" : BinData(0,"knqdZrxpyGFdSi0gljxCQG4LJ9U="),      "keyId" : NumberLong("6894922308364795934")    }  }}

   如果我们想手工的选择某个数据库的主分片,可以使用movePrimary命令,迁移主分片的过程会耗费一定的时间,在迁移完成之前,不应该对数据库或者对应的集合进行访问。迁移过程可能会影响整个集群的操作,所以这个命令一般不要主动去使用,如果必须使用,请务必考虑对网络负载的影响。

   如果你部署的一个分片集群是由一个副本集修改配置而来的,那么副本集上原来的那些数据库的主分片将会继续留在原来的副本集上,之后创建的数据库才可以将主分片设置在其他分片上。

02 如何迁移主分片

   下面我们演示如何使用movePrimary命令来迁移数据库的主分片。

首先,我们来看,当前new数据库的test集合的主分片在sharding_yeyz这个分片上。它就是new.test的主分片,如下:

mongos> sh.status()--- Sharding Status ---  shards:  { "_id" : "sharding_yeyz", "host" : "sharding_yeyz/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020", "state" : 1, "tags" : [ "1_1000" ] }  { "_id" : "sharding_yeyz1", "host" : "sharding_yeyz1/127.0.0.1:27024,127.0.0.1:27025,127.0.0.1:27026", "state" : 1, "tags" : [ "1000_", "1000_2000" ] }  databases:   ...  { "_id" : "new", "primary" : "sharding_yeyz", "partitioned" : true, "version" : { "uuid" : UUID("68c70c64-f732-4478-8851-06dad4b94d6b"), "lastMod" : 1 } }    new.test      shard key: { "number" : 1 }      unique: false      balancing: true      chunks:        sharding_yeyz 3        sharding_yeyz1 1      { "number" : { "$minKey" : 1 } } -->> { "number" : 1 } on : sharding_yeyz Timestamp(2, 1)       { "number" : 1 } -->> { "number" : 1000 } on : sharding_yeyz Timestamp(1, 2)       { "number" : 1000 } -->> { "number" : 2000 } on : sharding_yeyz1 Timestamp(2, 0)       { "number" : 2000 } -->> { "number" : { "$maxKey" : 1 } } on : sharding_yeyz Timestamp(1, 5)        tag: 1_1000 { "number" : 1 } -->> { "number" : 1000 }       tag: 1000_2000 { "number" : 1000 } -->> { "number" : 2000 }

接下来我们使用movePrimary命令,使用之前,我们需要知道它的执行过程:

首先在集群元数据中修改主分片信息

然后移动所有的没有分片的集合到指定的主分片中

**它只能在mongos上执行。

命令的用法是:

db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } )举例:db.adminCommand( { movePrimary : "new", to : "sharding_yeyz1" } )

我们执行完:

db.adminCommand( { movePrimary : "new", to : "sharding_yeyz1" } )

之后,结果如下:

mongos> sh.status()--- Sharding Status ---  shards:  { "_id" : "sharding_yeyz", "host" : "sharding_yeyz/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020", "state" : 1, "tags" : [ "1_1000" ] }  { "_id" : "sharding_yeyz1", "host" : "sharding_yeyz1/127.0.0.1:27024,127.0.0.1:27025,127.0.0.1:27026", "state" : 1, "tags" : [ "1000_", "1000_2000" ] } databases:  { "_id" : "new", "primary" : "sharding_yeyz1", "partitioned" : true, "version" : { "uuid" : UUID("68c70c64-f732-4478-8851-06dad4b94d6b"), "lastMod" : 2 } }    new.test      shard key: { "number" : 1 }      unique: false      balancing: true      chunks:        sharding_yeyz 3        sharding_yeyz1 1      { "number" : { "$minKey" : 1 } } -->> { "number" : 1 } on : sharding_yeyz Timestamp(2, 1)       { "number" : 1 } -->> { "number" : 1000 } on : sharding_yeyz Timestamp(1, 2)       { "number" : 1000 } -->> { "number" : 2000 } on : sharding_yeyz1 Timestamp(2, 0)       { "number" : 2000 } -->> { "number" : { "$maxKey" : 1 } } on : sharding_yeyz Timestamp(1, 5)        tag: 1_1000 { "number" : 1 } -->> { "number" : 1000 }       tag: 1000_2000 { "number" : 1000 } -->> { "number" : 2000 }

可以看到,主分片已经迁移完成了。

以上是“mongoDB主分片(primary shard)指的是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: MongoDB主分片(primary shard)指的是什么

本文链接: https://www.lsjlt.com/news/269209.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB主分片(primary shard)指的是什么
    小编给大家分享一下MongoDB主分片(primary shard)指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!01 主分片是什么?  分片...
    99+
    2023-06-14
  • MongoDB 主分片(primary shard)相关总结
    目录01 主分片是什么?02 如何迁移主分片01 主分片是什么?   分片集群中的每一个数据库都有一个主分片,这个主分片上保存了当前数据库中没有被分片的集合的数据,主分片(...
    99+
    2022-11-11
  • mongodb中的分片是什么
    在mongodb中分片是指在多台计算机之间存储数据记录的过程,它能够将数据水平切分到不同的物理节点,当应用数据越来越大的时候,数据量也会越来越大。它是一种mongodb方法,可以满足数据增长的需求。它在数据库或搜索引擎中创建数据的水平分区,...
    99+
    2022-10-18
  • mongodb分片的步骤是什么
    MongoDB分片的步骤如下:1. 部署配置服务器(Config Server):配置服务器用于存储分片集群的元数据信息,包括分片键...
    99+
    2023-08-24
    mongodb
  • mongodb分片事务的作用是什么
    MongoDB分片事务的作用是在分片集群上执行跨多个分片的原子操作。在分片集群中,数据根据某个字段进行分片,存储在多个分片上。分片事...
    99+
    2023-09-01
    mongodb
  • mongodb列表分片的方法是什么
    MongoDB的列表分片方法是使用分片键对数据进行分片。以下是使用MongoDB进行列表分片的步骤:1. 设计分片键:选择用于分片的...
    99+
    2023-09-05
    mongodb
  • MongoDB指的是什么
    这篇文章主要介绍了MongoDB的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是MongoDB?MongoDB(来自于英文单词...
    99+
    2022-10-18
  • mongodb分片数据恢复的方法是什么
    MongoDB分片数据恢复的方法主要有以下几种:1. 使用备份和恢复工具:可以使用MongoDB提供的mongodump和mongo...
    99+
    2023-08-23
    mongodb
  • MongoDB聚合指的是什么
    今天就跟大家聊聊有关MongoDB聚合指的是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MongoDB聚合介绍聚合是处理数据记录和返回计算结果...
    99+
    2022-10-18
  • mongodb隔离性指的是什么
    MongoDB的隔离性指的是在多个并发事务同时访问数据库时,确保每个事务只能看到其他事务已经提交的数据,而看不到其他事务未提交的数据...
    99+
    2023-09-06
    mongodb
  • mongodb唯一索引创建分片的方法是什么
    在MongoDB中,可以使用以下方法来为唯一索引创建分片: 创建一个分片索引:使用`sh.shardCollection()`方...
    99+
    2023-10-26
    mongodb
  • 共享MongoDB主机的五大好处分别是什么
    本篇文章为大家展示了共享MongoDB主机的五大好处分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。共享主机是在云中部署MongoDB的最具成本效益且易于设置的选项之一,并被全球数千家公司用...
    99+
    2023-06-04
  • 云主机指的是什么
    这篇文章主要讲解了“云主机指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“云主机指的是什么”吧!云主机是什么云主机是云计算在应用上的重要组成部分之一,位于云计算金字塔的底层产品主要源...
    99+
    2023-06-07
  • linux主目录指的是什么
    这篇文章将为大家详细讲解有关linux主目录指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在linux中,主目录是用户的家目录,可以使用“~”来表示;在添加用户时可以指定主目录,不同的用户,主目...
    99+
    2023-06-29
  • oracle的主目录是指什么
    oracle的主目录是指oracle软件安装的根目录,也称为Oracle Home。包含了数据库软件、系统文件、数据文件、工具和实用程序等重要组件和文件,是数据库系统的核心部分,用于管理和操作数据库实例。主目录的位置和命名规则因操作系统和o...
    99+
    2023-08-04
  • a12仿生芯片指的是什么
    a12仿生芯片指的是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。a12仿生芯片是指A12 Bionic,是2018年苹果公司推出的业界首款7nm芯片,该芯...
    99+
    2023-06-26
  • 数据库主体指的是什么
    这篇文章给大家分享的是有关数据库主体指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。数据库的主体是相关应用所需的全部业务数据的集合,称为物理数据库。数据库是一个长期存储在...
    99+
    2022-10-18
  • mysql主从同步指的是什么
    mysql主从同步指的是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql主从同步的意思为备份,主库(Maste...
    99+
    2022-10-18
  • SAP SD的主数据指的是什么
    SAP SD的主数据指的是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SAP SD基础知识之主数据一,客户主数据客户主数据分成几大块,或者说几个层次。一般...
    99+
    2023-06-05
  • 计算机中主频指的是什么
    这篇文章主要介绍了计算机中主频指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主频是反映计算机“运算速度”的性能指标。CPU的主频不代表CPU的速度,但提高主频对于提...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作