0

0

MongoDB自动分块机制失效怎么办_Auto-Split守护进程与mongos的作用

P粉602998670

P粉602998670

发布时间:2026-03-17 09:50:38

|

550人浏览过

|

来源于php中文网

原创

MongoDB 6.0+ 已彻底移除自动分块机制,sh.enableAutoSplit()等命令无效;分裂仅发生在手动操作或均衡器迁移前校验时,核心问题在于分片键设计不当而非配置错误。

mongodb自动分块机制失效怎么办_auto-split守护进程与mongos的作用

自动分块(auto-split)在 MongoDB 6.0+ 已被禁用

MongoDB 6.0.3 开始,sh.enableAutoSplit()sh.disableAutoSplit() 命令仍然存在,但**完全不执行任何操作**。这不是 bug,而是官方主动移除:均衡策略改由更智能的 chunk 迁移与大小调控驱动,不再依赖“插入/更新触发即时分裂”这一老机制。

常见错误现象是:明明数据持续写入、chunk 明显超大(比如 >128MB),却始终没见自动拆分,sh.status() 中 chunks 数量长期不变。别查 mongos 日志了——它压根没尝试 split。

  • 6.0 之前:写入或更新单个文档可能触发 chunk 分裂(前提是超出当前 chunkSize
  • 6.0 及之后:分裂只发生在 手动干预均衡器迁移前校验 阶段(例如 moveChunk 检测到目标 chunk 太大而拒绝迁移,此时会先分裂)
  • 你无法“重启 auto-split 守护进程”,因为这个进程已不存在;mongos 不再承担分裂调度职责,它只做路由和命令转发

chunkSize 修改后为什么没立刻生效

修改全局 chunkSize(单位 MB)只是设了个“目标上限”,现有 chunk 不会自动重切。MongoDB 只会在特定时机检查并执行分裂:

  • 均衡器运行时,准备迁移某个 chunk,发现它 > 新 chunkSize × 1.1(预留缓冲),就会先分裂再迁移
  • 你手动执行 sh.splitAt()sh.splitFind()
  • 集合刚开启分片时,初始 chunk 按新 chunkSize 划分(但仅限首次)

所以减小 chunkSize 后,得等均衡器活跃 + 有 chunk 触发迁移,才逐步看到分裂效果。如果集群负载低、无迁移需求,可能几小时都没动静。别误以为配置失败。

设置命令示例(连接任意 mongos):

use config<br>db.settings.updateOne({ _id: "chunksize" }, { $set: { value: 64 } }, { upsert: true })

均衡器不运行 ≠ 分块失效,但可能是真卡点

sh.isBalancerRunning() 返回 false 很常见,不代表故障——它只表示“此刻没有迁移任务正在执行”。但如果你扩容后数据长期滞留在旧分片(如某 shard 占 95% 数据),那问题大概率出在 chunk 太大导致迁移失败。

AI改图神器
AI改图神器

AI万能图片编辑器,一键抠图,去水印,智能图片美化,照片转漫画,照片变活转视频,图片无损放大,一键背景虚化,位图智能转矢量图

下载

典型错误日志:

ChunkTooBig: Cannot move chunk: the maximum number of documents for a chunk is 114640, the maximum chunk size is 67108864
这说明 chunk 超过默认 64MB,且均衡器拒绝搬运,又不会自动切分,于是卡死。

  • 临时解法:对具体集合单独调大 chunkSize,用 db.adminCommand({ configureCollectionBalancing: "db.coll", chunkSize: 256 })
  • 根治方向:检查分片键是否单调(如 order_id)、基数是否太低(如只有 3 个 school_id 值),这些会导致 chunk 天然巨大且无法均匀分布
  • 别指望 mongos “唤醒”分裂逻辑——它没这个功能;所有分裂动作必须由你触发,或靠均衡器在迁移上下文中被动触发

真正该盯住的不是 auto-split,而是分片键设计

很多团队花几小时调 chunkSize、查 mongos 日志,最后发现:无论怎么调,总有一两个 chunk 巨大无比,永远移不动。根源几乎都在分片键上。

  • 如果分片键值高度重复(比如 { status: "active" }),所有文档挤进同一个 chunk,chunkSize 再小也无解
  • 如果分片键单调递增(如 timestamp),新数据全写到末尾 chunk,它会不断膨胀,直到触发迁移失败
  • 哈希分片({"uid": "hashed"})能强制分散,但代价是丧失范围查询能力——得看你业务是否接受

重新分片(sh.reshardCollection())是 MongoDB 5.0+ 提供的补救手段,但它要求集合无活跃写入、耗资源、有锁表风险。比起事后抢救,一开始选对分片键成本低得多。

容易被忽略的一点:即使你把 chunkSize 设成 1MB,只要分片键设计不当,chunk 依然会迅速突破限制——机制可以调,但数据分布规律改不了。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

287

2023.07.18

mongodb启动命令
mongodb启动命令

MongoDB 是一种开源的、基于文档的 NoSQL 数据库管理系统。本专题提供mongodb启动命令的文章,希望可以帮到大家。

267

2023.08.08

MongoDB删除数据的方法
MongoDB删除数据的方法

MongoDB删除数据的方法有删除集合中的文档、删除整个集合、删除数据库和删除指定字段等。本专题为大家提供MongoDB相关的文章、下载、课程内容,供大家免费下载体验。

161

2023.09.19

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1010

2023.11.02

mongodb有哪些应用领域
mongodb有哪些应用领域

mongodb 的应用领域涵盖广泛,包括内容管理系统、社交媒体、分析、移动应用、物联网、金融科技、医疗保健和广告技术等领域,因其灵活性、可扩展性和易用性而广受欢迎。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

345

2024.04.02

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

501

2024.04.02

mongodb安装失败如何彻底删除
mongodb安装失败如何彻底删除

彻底删除 mongodb 安装失败的步骤:1、停止和禁用 mongodb 服务;2、删除配置文件、数据目录和日志文件;3、删除 mongodb 二进制文件;4、卸载 mongodb 套件(如果通过软件包管理器安装);5、删除 mongodb 用户、组和目录;6、重启系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

381

2024.04.02

mongodb与mysql好用推荐
mongodb与mysql好用推荐

mongodb 适用于非结构化数据、高扩展性和灵活查询(如网站内容管理、社交媒体),而 mysql 适用于结构化数据、强数据一致性和联接查询(如电子商务、银行系统)。

395

2024.04.02

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

10

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号