关于MongoDB数据库自动分片技术的详细介绍

MongoDB数据库自动分片技术就是将原先数据库中集合依据一定的规则切分成若干小块,这些分片小块统一由mongos路由管理,当有请求查询或写入时,路由会依据分片shard key规则找到对应的分片操作。分片解决了写密集操作,用于分散单一写服务器负载。亦或者原先的存储空间不够了,这个时候可能通过分片操作将之后的数据写入其它存储空间上。可以看出,集合的分片和数据库的分表类似,并且每个分片都支持写操作。

由于分片的出现,导致数据被分布式的存储到不同的服务器上,当某一服务器出现问题时就可能导致数据丢失,其次路由mongos也会出现问题,另外存储分片的信息的配置服务器也可能会发生问题。当然我们可以利用master salve/Replica sets机制去备份每个分片、Mongos、configs 。如下官网配置图示,即使我们使用服务器交叉备份也需要大量的服务器资源,因此分片是一件***耗费资源的事情。官网的配置图示

首先路由从config中读取配置信息,发生的分片动态增加也会通过mongos写入config servres中,当client有请求时通过mongos查找到对应的分片。可以看出分片使用的replica set备份模式,而mongos/config servrs则是多个服务器配置。下面就手动实现一下分片的过程。(换环境了继续昨天未完成的,前2天在笔记本上)

1)创建configs服务器

  1. ....bin>mongod --dbpath "e:\mongodb\data\configs"  --port 23017   

2)创建mongos服务器 并指定依赖的配置服务器 (mongos依赖于配置服务器,mongos查询的分片信息都存储在configs中)

  1. ....bin>mongos  --port 25017  --configdb 127.0.0.1:23017 

3)创建多个分片服务器 (负责数据存储)

  1. ....bin>mongod  --port 27017 --dbpath  "e:\mongodb\data\dbs\shard27017"  

为shard27017分片服务器 创建test库foo集合,并且为foo集创建name索引。

4)连接mongos服务器添加shard27017分片服务器到configs服务器中。

  1. >use admin  
  2.  
  3. >db.runCommand({addshard:"127.0.0.1:27017",allowLoacl:true})               //添加分片服务器,allowLoacl 充许本地部署 默认情况不充许本地部署多个分片的  

一旦分片添加成功,在mongos服务器中执行 show dbs就可以看到分片服务器的数据库,并且可以操作分片服务器的数据 ,下面为分片服务器的test库foo集合设置分片以及分片shard key。

  1. >db.runCommand({"enablesharding":"test"})     //对test库启用分片功能 

注意:需要分片的集合 的shard key必须是索引键, (我们也可以在mongos为分片foo集合创建索引)

  1. >db.runCommand({"shardcollection":"test.foo","key":{"name":1}})                       //数字代表排序 

至此自动分片就创建完成了,可以在mongos或configs服务器查询分片信息。

当一个分片服务器存储不够时,通过像3)方式继续添加分片服务器,monogs会自实现这些分片的集群工作。

当需要移除分片时运行下面的命令,同时mongos路由会将此分片服务器上的信息移到其它分片上。

  1. >db.runCommand({"removeshard":"127.0.0.1:27017"}) 

简单的分析一下这个shard key,当不是写密集操作时,而仅仅是因为存储空间不够了,这个shard key我们可以选用一些无上限范围的key,如创建时间等,这样新创建的记录都会写入新的分片服务器上。

当需要使每个分片均匀分布数据时,或者写入密集时,***选用有一定范围值的key ,当然这个范围不能太小,像性别,真假等,这会导致只自动产生两个分片,所以一定要选择合适的shard key才能达到理想的效果。

关于MongoDB数据库的自动分片技术就介绍到这里,希望通过本次的介绍能够带给您一些收获。

【编辑推荐】

  1. MongoDB数据库的备份与恢复详解
  2. MongoDB中索引的创建和使用详解
  3. Exchange数据库的恢复问题和可用性介绍
  4. MongoDB权限管理之用户名和密码的操作
  5. MongoDB基于Java、PHP的一般操作和用户安全设置

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/295910.html<

(0)
运维的头像运维
上一篇2025-05-21 18:33
下一篇 2025-05-21 18:34

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注