您可以使用 abortMoveCollection命令来停止移动未分片的集合。
关于此任务
要停止正在进行的moveCollection操作,请对admin数据库运行abortMoveCollection命令。
访问控制
如果您的部署启用了访问权限控制,则enableSharding角色允许您运行abortMoveCollection命令。
步骤
1
停止移动集合
要停止移动集合,请运行abortMoveCollection命令。 以下示例停止正在进行的app.inventory集合从shard01到shard02的移动。
db.adminCommand( { abortMoveCollection: "app.inventory" } )
运行abortMoveCollection命令后,命令输出将返回ok: 1 ,如下所示:
{ ok: 1, '$clusterTime': { clusterTime: Timestamp( { t: 1726524884, i: 28 } ), signature: { hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0), keyId: Long('0') } }, operationTime: Timestamp({ t: 1726524884, i: 28 }) }
2
确认移动操作已停止
要确认集合没有移动到新分分片,请使用$collStats管道阶段。
以下示例展示如何确认app.inventory集合仍在同一分片上:
db.inventory.aggregate( [ { $collStats: {} }, { $project: { "shard": 1 } } ] )
此管道阶段的输出类似于以下内容:
[ { shard: 'shard01' } ]