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

moveCollection

在此页面上

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

8.0版本新增

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

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

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

注意

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

不能将moveCollection用于:

该命令具有以下语法:

db.adminCommand(
{
moveCollection: "<database>.<collection>",
toShard: "<ID of the recipient shard>",
}
)

该命令接受以下字段:

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

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

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

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

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

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

    • 确保 CPU 负载低于80 %。

重要

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

  • 数据库空间不足并关闭

  • 性能下降

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

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

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

db.adminCommand(
{
moveCollection: "app.inventory",
toShard: "shard02"
}
)

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

后退

moveChunk