movePrimary
movePrimary
Em umcluster fragmentado ,
movePrimary
reatribui o fragmento primário que contém todas as coleções não fragmentadas no banco de banco de dados.movePrimary
primeiro altera o fragmento primário nos metadados do cluster e, em seguida, migra todas as collections não fragmentadas para o shard especificado. Use o comando com o seguinte formulário:db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } ) Por exemplo, o seguinte comando move o fragmento primário de
test
parashard0001
:db.adminCommand( { movePrimary : "test", to : "shard0001" } ) Quando o comando retorna, o local do fragmento primário do banco de dados mudou para o fragmento especificado. Para desativar totalmente um fragmento, use o comando
removeShard
.movePrimary
é um comando administrativo que está disponível somente para instâncias domongos
.Aviso
Depois de iniciar o
movePrimary
, não execute nenhuma operação de leitura ou gravação em nenhuma coleção não fragmentada nesse banco de dados até que o comando seja concluído. As operações de leitura ou escrita emitidas para essas collections durante a migração podem resultar em comportamento inesperado, incluindo possível falha da operação de migração ou perda de dados.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Este comando não é suportado em instâncias sem servidor. Para obter mais informações, consulte Comandos não suportados.
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
Considerações
mongos
usa "majority"
preocupação de escrita para movePrimary
.
Edição movePrimary
durante uma janela de manutenção
movePrimary
pode levar um tempo significativo para ser concluído, dependendo do tamanho do reconhecimento de data center e de fatores como integridade da rede ou recursos da máquina. As operações de leitura ou gravação emitidas no reconhecimento de data center durante a migração podem resultar em comportamento inesperado, incluindo possível falha da operação de migração ou perda de dados.
Considere agendar uma janela de manutenção durante a qual os aplicativos interrompam todas as leituras e gravações no cluster. A emissão movePrimary
durante o tempo de inatividade planejado reduz o risco de encontrar um comportamento indefinido devido à intercalação de leituras ou gravações nas collections não fragmentadas no banco de dados.
Conflitos de namespace impedem migração
movePrimary
falhará se o fragmento de destino contiver um collection namespace conflitante. Por exemplo:
Um administrador emite
movePrimary
para alterar o fragmento primário do reconhecimento de data centerhr
.Um usuário ou aplicação emite uma operação de gravação em uma collection não fragmentada em
hr
enquantomovePrimary
está movendo essa collection. A operação de gravação cria a coleção no fragmento primário original.Um administrador emite posteriormente
movePrimary
para restaurar o fragmento primário original para o banco de dadoshr
.movePrimary
falha devido ao namespace conflitante deixado para trás pela operação de gravação intercalada.
O fragmento de destino deve reconstruir os índices
Como parte da operação movePrimary
, o fragmento de destino deve reconstruir os índices nas coleções migradas depois de se tornar o fragmento primário. Isso pode exigir uma quantidade significativa de tempo, dependendo do número de índices por coleção e da quantidade de dados para indexar.
Consulte Construções de Índices em collection Preenchidas para obter mais informações sobre o processo de construção de índices.
Informações adicionais
Consulte Remover fragmentos de um cluster fragmentado existente para obter um procedimento completo.