You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB 3.6版本如何取消error集合的分片?

取消MongoDB error集合分片的实操步骤

前置准备

  • 确认分片集群所有节点(mongos、配置服务器、分片节点)运行稳定
  • 提前备份error集合数据,避免操作失误:mongodump --host <mongos_host> --port <mongos_port> --db <你的数据库名> --collection error

操作步骤

  1. 连接mongos节点
    使用Mongo Shell连接到集群的mongos节点:

    mongosh --host <mongos_host> --port <mongos_port>
    

    替换占位符为实际的mongos地址和端口。

  2. 停止均衡器
    迁移期间避免均衡器自动移动chunk干扰操作,先停止均衡器:

    sh.stopBalancer()
    

    执行以下命令确认均衡器已停止:

    sh.getBalancerState()
    

    返回false表示停止成功。

  3. 确定主分片
    找到error集合所在数据库的主分片(所有数据最终将迁移至此):

    db.getSiblingDB("<你的数据库名>").getPrimaryShard()
    

    记录返回的分片名称(例如shard0000)。

  4. 查看chunk分布
    确认当前error集合的chunk在各分片的分布情况:

    db.getSiblingDB("<你的数据库名>").error.getShardDistribution()
    

    留意所有不在主分片上的chunk信息。

  5. 迁移所有chunk到主分片
    对每个非主分片上的chunk,执行迁移命令:

    sh.moveChunk("<你的数据库名>.error", {<分片键字段>: <chunk起始值>}, "<主分片名称>")
    
    • <分片键字段>:error集合当前使用的分片键(比如log_id)
    • <chunk起始值>:从sh.status()的输出中获取对应chunk的起始值
    • <主分片名称>:步骤3中记录的主分片名称

    若chunk数量较多,可通过循环批量迁移:

    var targetShard = "<主分片名称>"
    var chunks = db.getSiblingDB("config").chunks.find({ns: "<你的数据库名>.error", shard: {$ne: targetShard}})
    chunks.forEach(function(chunk) {
        sh.moveChunk(chunk.ns, chunk.min, targetShard)
    })
    
  6. 验证chunk迁移完成
    再次查询chunk分布,确认所有chunk均已迁移到主分片:

    db.getSiblingDB("<你的数据库名>").error.getShardDistribution()
    

    输出应仅显示主分片的信息。

  7. 取消集合分片配置
    执行命令将error集合从分片状态转为单分片集合:

    sh.disableSharding("<你的数据库名>.error")
    
  8. 重启均衡器
    操作完成后恢复均衡器运行:

    sh.startBalancer()
    

    确认均衡器已启动:

    sh.getBalancerState()
    

    返回true表示启动成功。

  9. 恢复写入操作(若之前暂停)
    如果操作前暂停了对error集合的写入,现在恢复相关应用的写入权限。

  10. 验证取消分片成功
    确认error集合已不再是分片集合:

    db.getSiblingDB("<你的数据库名>").error.stats().sharded
    

    返回false表示操作成功。

内容的提问来源于stack exchange,提问作者Jithin M V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:01:26