Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

unshardCollection

在此页面上

  • 定义
  • 兼容性
  • 限制
  • 语法
  • 命令字段
  • Considerations
  • 要求
  • 示例
  • 了解详情
unshardCollection

对现有分分片的集合进行取消分片,并将集合数据移动到单个分片片上。 当您对集合取消分片时,无法将该集合跨多个分片进行分区,并且分片分片键将被删除。

8.0版本新增

提示

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

辅助方法对 mongosh 用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

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

注意

对集合取消分片是一项写入密集型操作,可能会导致oplog增长率加快。 为帮助缓解此问题,请考虑对配置进行以下更改:

  • 要防止oplog无限制增长,请设立固定的oplog大小。

  • 要降低从节点过时的可能性,请增加oplog的大小。

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

此命令可用于以下环境中托管的部署:

重要

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

不能将unshardCollection用于:

db.adminCommand( {
unshardCollection: "<database>.<collection>",
toShard: "<shard-id>"
} )
字段
类型
必要性
说明
unshardCollection
字符串
必需
指定要取消分片的数据库和集合。
toShard
字符串
Optional

指定接收分分片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