Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

commitShardRemoval (comando de banco de dados)

commitShardRemoval

Remove um fragmento de um cluster.

Para executar este comando, você deve primeiro drenar o fragmento com o startShardDraining comando. Este comando diz ao balanceador para mover chunks do shard para outros shards no cluster. Você também deve mover manualmente quaisquer bancos de dados que utilizam o fragmento como fragmento primário e coleções não fragmentadas armazenadas no fragmento antes de executar o commitShardRemoval comando.

O comando retorna um erro se o shard não for completamente drenado ou se contiver um banco de dados ou uma coleção não fragmentada. Se o fragmento for drenado e todos os bancos de dados e coleções não fragmentadas migrarem do fragmento, o comando retornará ok.

Para iniciar a drenagem de um shard, consulte o startShardDraining comando.

Para verificar o status de um shard de drenagem , consulte o shardDrainingStatus comando.

Para interromper a drenagem de um shard, consulte o comando stopShardDraining .

Novidades na versão 8.3.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

Observação

Este comando não é suportado no MongoDB Atlas. Consulte Modificar seu Atlas Cluster Sharded para adicionar ou remover shards do seu Atlas cluster.

O comando tem a seguinte sintaxe:

db.adminCommand( {
commitShardRemoval: <shard>
} )

Se você tiver authorization habilitado, deverá ter a função clusterManager ou qualquer função que inclua a ação removeShard .

Cada banco de dados em um cluster fragmentado tem um fragmento primário. Se o shard que você deseja drenar também for o primary de um dos bancos de dados do cluster, mova manualmente os bancos de dados de seu fragmento primário para um novo shard depois de migrar todos os dados do shard.

Se houver um banco de dados que usa o shard que você deseja usar como primary, o comando commitShardRemoval retornará um erro.

Para obter movePrimary detalhes, consulte o comando e Remover fragmentos de um cluster compartilhado para obter mais informações.

As coleções não fragmentadas são armazenadas em shards individuais. Se uma dessas coleções estiver no fragmento que você deseja remover, primeiro você deverá migrar a coleção para um fragmento diferente.

Se houver uma coleção não fragmentada armazenada no fragmento que você deseja remover, o comando commitShardRemoval retornará um erro.

Para migrar uma collection não fragmentada, consulte o moveCollection comando.

Para iniciar a drenagem de um shard, use o método db.adminCommand() startShardDraining para executar o comando:

db.adminCommand( { startShardDraining: "shard04" } )

Para verificar o status da operação de drenagem , use o shardDrainingStatus comando:

db.adminCommand( { shardDrainingStatus: "shard04" } )
{
"msg" : "draining completed successfully",
"state" : "drainingComplete",
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1771839836, 139),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1771839836, 139)
}

Se a saída mostrar qualquer banco de dados no dbsToMove campo, use o comando para movê-lo para um shard movePrimary diferente.

Se a saída mostrar quaisquer collections não fragmentadas no collectionsToMove campo, use o comando para movê-las para um shard moveCollection diferente.

Quando shardDrainingStatus { state: "drainingComplete" }mostra, o balanceador terminou de mover chunks para fora do shard. Agora você pode remover o fragmento:

db.adminCommand( { commitShardRemoval: "shard04" } )
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1771840037, 12),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1771840037, 12)
}

Voltar

commitReshardCollection

Nesta página