Interromper a movimentação de uma coleção
Você pode parar de mover uma collection não fragmentada usando o comando abortMoveCollection
.
Sobre esta tarefa
Para interromper uma operação moveCollection
em andamento, execute o comando abortMoveCollection
no banco de banco de dados admin
.
Controle de acesso
Se seu sistema tiver o controle de acesso ativado, a função enableSharding
permitirá que você execute o comando abortMoveCollection
.
Passos
Parar de mover a coleção
Para parar de mover uma collection, execute o comando abortMoveCollection
. O exemplo a seguir interrompe a movimentação em andamento da collection app.inventory
de shard01
para shard02
.
db.adminCommand( { abortMoveCollection: "app.inventory" } )
Após executar o comando abortMoveCollection
, a saída de comando retorna ok: 1
e é semelhante ao seguinte:
{ ok: 1, '$clusterTime': { clusterTime: Timestamp( { t: 1726524884, i: 28 } ), signature: { hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0), keyId: Long('0') } }, operationTime: Timestamp({ t: 1726524884, i: 28 }) }
Confirme se a operação de mudança foi interrompida
Para confirmar que a coleção não foi movida para o novo fragmento, use o estágio de pipeline $collStats
.
O exemplo a seguir mostra como confirmar que a coleção app.inventory
permanece no mesmo fragmento:
db.inventory.aggregate( [ { $collStats: {} }, { $project: { "shard": 1 } } ] )
Esse estágio do pipeline tem uma saída semelhante a esta:
[ { shard: 'shard01' } ]