首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MongoDB-副本集(Replica Set)&分片(Shard)

MongoDB-副本集(Replica Set)&分片(Shard)

作者头像
运维小路
发布2026-01-26 12:51:05
发布2026-01-26 12:51:05
1510
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL

MongoDB(本章节)

Redis

Etcd

上个小节我们介绍了MongoDB的副本集,他虽然解决了集群高可用的问题,但是由于他的写只能在主节点执行,并且受限单机的资源限制,所以他能够存储的数据是有限的。今天来介绍一个存储大量数据,并且可以做到横向扩容。

分片是 MongoDB 横向扩展 以支持海量数据和高吞吐量操作的方法。

1. 是什么分片

分片是一种“分而治之”的数据库集群技术,它将一个巨大的数据集拆分成更小的部分(称为分片),并将这些部分分布到多个 MongoDB 实例(即分片服务器)上。

2. 核心架构

一个分片集群包含以下三个核心组件:

  • 分片:每个分片是数据的一个子集。每个分片本身应该是一个复制集(在生产环境中),以确保每个数据子集的高可用性。
  • 配置服务器:存储集群的元数据,如数据块与分片的映射关系。配置服务器本身也必须是一个复制集,以确保元数据的安全。
  • 查询路由:即 mongos 进程。它是应用程序的入口,本身是无状态的。应用程序连接 mongos 而不是直接连接分片。mongos 根据配置服务器的元数据,将客户端请求路由到正确的分片上。
3. 工作原理
  • 数据分片:你需要选择一个或多个字段作为 分片键。MongoDB 根据分片键的值将文档划分到不同的 数据块 中。
  • 数据分布:MongoDB 会自动在分片之间迁移这些数据块,以保持集群中所有分片的负载均衡。
  • 请求路由
    • 如果查询包含分片键,mongos 可以直接将请求精准路由到对应的分片。
    • 如果查询不包含分片键,mongos 会将查询 广播 到所有分片,然后汇总结果返回给客户端(这种操作称为 散射/聚集,性能较差)。
    • 插入/查询:当应用通过 mongos 发起请求时,mongos 会分析查询条件。
4. 主要优势
  • 水平扩展:通过增加更多的分片服务器来扩展系统的整体容量和吞吐量。
  • 处理海量数据:单个服务器的磁盘和内存有限,分片可以将数据分布到多台机器上,突破单机硬件限制。
  • 高吞吐量:多台机器可以并行处理操作,尤其是写操作。
5. 适用场景
  • 单机磁盘不足以存放巨大数据集时。
  • 单机无法满足高吞吐量的写操作时。
  • 活跃的工作集大小超过了系统内存容量,导致大量磁盘 IO。

6.总结与对比

特性

复制集

分片集群

核心目标

高可用、数据冗余

水平扩展、处理海量数据

数据状态

所有节点存储全量数据

每个分片存储部分数据

写操作

只在主节点进行

通过 mongos 并行写入多个分片

架构复杂度

相对简单

非常复杂(需要管理 mongos、配置服务器、多个分片)

适用场景

保证服务不中断、数据不丢失

数据量巨大或并发写入量极高

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB(本章节)
    • 1. 是什么分片
    • 2. 核心架构
    • 3. 工作原理
    • 4. 主要优势
    • 5. 适用场景
    • 6.总结与对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档