停止移动集合
您可以使用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' } ]