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

MongoDB 6.0.1分片异常:shardCollection提示数据库未启用分片

问题:MongoDB分片集群执行enableSharding成功后,shardCollection提示未启用分片

在Kubernetes集群中通过Bitnami Helm部署MongoDB 6.0.1,此前数据库及集合操作正常。近期执行分片相关命令时出现异常:

执行命令及输出

启用数据库分片

[direct: mongos] my_db> sh.enableSharding("my_db")

输出:

{
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t: 1678966557, i: 1 }),
    signature: {
      hash: Binary(Buffer.from("b5da1b9a2539ecdaf77096012e36a014b51c492b", "hex"), 0),
      keyId: Long("7925145979144201565")
    }
  },
  operationTime: Timestamp({ t: 1678966557, i: 1 })
}

分片集合

[direct: mongos] my_db> sh.shardCollection("my_db.my_collection", {"_id": "hashed"})

输出:

MongoServerError: sharding not enabled for db my_db

排查与解决步骤

  • 确认分片集群状态

    1. 执行sh.status()查看集群配置,重点检查databases区块中my_db的partitioned字段是否为true
    2. 切换到config库执行查询:use config; db.databases.find({_id: "my_db"}),验证返回文档的partitioned属性是否正确设置为true
  • 刷新mongos路由缓存

    1. 在mongos执行命令强制刷新缓存:db.runCommand({ flushRouterConfig: 1 })
    2. 若部署了多mongos实例,重启所有mongos Pod后重新连接重试
  • 验证Bitnami部署配置

    1. 检查Helm values文件确认已启用分片架构:architecture: sharded
    2. 连接到config server副本集主节点,执行rs.status()确认副本集状态正常
    3. 执行sh.status()确认所有shard节点已成功加入集群
  • 手动修复分片状态(若上述步骤无效)

    1. 连接到config server副本集的主节点
    2. 切换到config库:use config
    3. 更新数据库分片状态:db.databases.update({_id: "my_db"}, {$set: {partitioned: true}})
    4. 返回mongos执行db.runCommand({ flushRouterConfig: 1 }),再重新尝试分片集合操作

内容的提问来源于stack exchange,提问作者Shawaiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:15:28