文档菜单
文档首页
/
MongoDB 手册
/ / /

unshardCollection

本页内容

  • 定义
  • 兼容性
  • 限制
  • 语法
  • 命令字段
  • 注意事项
  • 要求
  • 示例
  • 了解更多
unshardCollection

取消对现有分片集合的分片,并将集合数据移动到单个分片。当取消分片集合时,集合不能跨多个分片分区,并且移除分片键

新增在版本8.0.

提示

mongosh中,此命令也可以通过sh.unshardCollection()运行。

辅助方法对于mongosh用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要方便或需要额外的返回字段的情况下,请使用数据库命令。

此命令必须在admin数据库上运行。

注意

取消分片集合是一个写密集型操作,可能导致操作日志增长速率增加。为了减轻这种影响,请考虑以下配置更改

  • 为了防止操作日志无界增长,设置固定的操作日志大小。

  • 为了减少次级副本过时的可能性,增加操作日志大小。

有关更多详细信息,请参阅副本集Oplog。

此命令可在以下环境中部署的以下环境中使用

重要

此命令不能在共享或无服务器实例上运行。有关更多信息,请参阅不支持的命令。

您不能为以下内容使用unshardCollection

db.adminCommand( {
unshardCollection: "<database>.<collection>",
toShard: "<shard-id>"
} )
字段
类型
必要性
描述
unshardCollection
string
必填
指定要取消分片的数据库和集合。
toShard
string
可选

指定接收者分片ID。在MongoDB取消分片集合时,它会将集合数据从当前分片移动到该特定分片。

如果未指定,集群将选择数据量最少的分片。

在您取消分片您的集合之前,请确保您满足以下要求

  • 您的应用程序可以容忍在受影响的集合阻止写入期间,出现两秒钟的延迟。在此时间段内,您的应用程序将经历延迟增加。

  • 您的数据库满足以下资源要求

    • 确保您要移动集合到的分片有足够的存储空间来存储该集合及其索引。目标分片至少需要 ( Collection storage size + Index Size ) * 2 字节可用。

    • 确保您的I/O容量低于50%。

    • 确保您的CPU负载低于80%。

以下示例取消了 sales.eu_accounts 集合的分片

db.adminCommand( {
unshardCollection: "sales.eu_accounts"
} )

以下示例将 sales.us_accounts 集合合并到 shard1

db.adminCommand( {
unshardCollection: "sales.eu_accounts",
toShard: "shard1"
} )

返回

unsetSharding