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

sh.moveCollection()

在此页面上

  • 定义
  • 语法
  • 兼容性
  • Considerations
  • 要求
  • 示例
  • 了解详情
sh.moveCollection(namespace, destination)

将单个未分片集合移动到不同的分片sh.moveCollection()mongos使用 管理员数据库 时,通过 实例运行 。

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。

有关数据库命令,请参阅 moveCollection 命令。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

sh.moveCollection() 通过以下语法实现:

sh.moveCollection( "<database>.<collection>" )

sh.moveCollection() 使用以下参数:

Parameter
类型
说明
namespace
字符串
要移动的数据库和集合名称。
toShard
字符串
接收分片的 ID。

此方法可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

此命令在Atlas共享层上不可用。

在移动集合之前,请确保满足以下要求:

  • 您的应用程序可以允许受影响的集合块进行两秒钟的写入。 在写入受阻期间,应用程序的延迟会增加。

  • 您的数据库符合这些资源要求:

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

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

    • 确保 CPU 负载低于80 %。

重要

数据库不会强制执行这些要求。未能分配足够的资源可能会导致:

  • 数据库空间不足并关闭

  • 性能下降

  • 操作花费的时间比预期长

如果应用程序存在流量较少的时间段,请尽可能在该时间段对集合执行此操作。

此示例将app数据库上名为inventory的未分片集合移动到shard02分分片。

sh.moveCollection( "app.inventory", "shard02" )

要获取可用分分片ID 的列表,请运行sh.status() 。 有关详细信息,请参阅sh.status() 输出。

后退

sh.moveChunk