moveCollection
定义
兼容性
此命令适用于以下环境中的部署
MongoDB Atlas:云中 MongoDB 部署的完全托管服务
注意
此命令在 Atlas 共享层或 Atlas Serverless 上不可用。
MongoDB 企业版:基于订阅的自管理 MongoDB 版本
MongoDB 社区版:源代码可用的、免费使用且可自管理的 MongoDB 版本
限制
您不能使用 moveCollection
为以下用途
语法
该命令具有以下语法
db.adminCommand( { moveCollection: "<database>.<collection>", toShard: "<ID of the recipient shard>", } )
命令字段
该命令包含以下字段:
字段 | 类型 | 描述 |
---|---|---|
moveCollection | 字符串 | 要移动的数据库和集合名称。 |
toShard | 字符串 | 接收方分片的ID。 |
注意事项
moveCollection
只能在分片集群上运行。moveCollection
只能移动非分片集合。moveCollection
每次只能移动一个集合。moveCollection
的最小持续时间为5分钟。在运行
moveCollection
之后,需要重新构建 Atlas Search 索引。在
moveCollection
完成之前,您无法进行拓扑更改,例如添加或删除分片,或者在嵌入式和专用配置服务器之间进行转换。在
moveCollection
运行期间,您不能对正在移动的集合执行以下操作在
moveCollection
运行期间,您不能对集群执行以下操作在
moveCollection
运行期间发生的索引构建可能会无声失败。在
moveCollection
运行期间,请不要创建索引。如果有正在进行的索引构建,请不要调用
moveCollection
。
需求
在移动集合之前,请确保满足以下要求
您的应用程序可以容忍在受影响的集合阻止写入的两秒钟期间。在此期间,您的应用程序将经历延迟增加。
您的数据库满足以下资源需求
确保您要移动集合到的分片有足够的空间来存储集合及其索引。目标分片需要至少
(集合存储大小 + 索引大小) * 2
字节可用。确保您的I/O容量低于50%。
确保您的CPU负载低于80%。
重要
数据库不强制执行这些要求。未能分配足够资源可能导致
数据库空间不足并关闭
性能下降
操作时间比预期长
如果您的应用程序有时间流量较轻的时段,尽可能在该时段内对集合执行此操作。
示例
此示例将名为 inventory
的无分片集合从 app
数据库移动到 shard02
分片。
db.adminCommand( { moveCollection: "app.inventory", toShard: "shard02" } )
要获取可用分片ID的列表,运行 sh.status()
。有关详细信息,请参阅 sh.status() 输出示例。