Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

replSetStepDown

Nesta página

  • Descrição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Exemplos
replSetStepDown

Instrui o primário do conjunto de réplicas a se tornar um secundário. Após as etapas primárias, os secundários elegíveis realizarão uma eleição para as primárias.

O comando não diminui imediatamente o primary. Se nenhum secundário electable estiver atualizado com o primário, o primário aguardará até secondaryCatchUpPeriodSecs (por padrão, 10 segundos) para que um secundário se atualize. Uma vez que um secundário elegível esteja disponível, o comando retira o primário.

Uma vez recuado, o primário original torna-se secundário e não se qualifica para se tornar primário novamente pelo restante do tempo especificado por replSetStepDown: <seconds>.

Para uma explicação detalhada da execução do comando, consulteComportamento do .

Observação

O comando só é válido contra o primário e gera um erro se for executado em um membro não primário.

Dica

Em mongosh, esse comando também pode ser executado por meio do método auxiliar rs.stepDown().

Os métodos auxiliares são práticos para os usuários mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.

O replSetStepDown só pode ser executado no banco de dados admin .

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 M0, M2, M5 e M10+ clusters. 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

O comando tem a seguinte sintaxe:

db.adminCommand(
{
replSetStepDown: <seconds>,
secondaryCatchUpPeriodSecs: <seconds>,
force: <true|false>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
replSetStepDown
número

O número de segundos para deixar o primário, período durante o qual o nó renunciante não está qualificado para se tornar primário. Se você especificar um valor não numérico, o comando usará 60 segundos.

O período de recuo começa a partir do momento em que o mongod recebe o comando. O período de recuo deve ser maior que secondaryCatchUpPeriodSecs.

secondaryCatchUpPeriodSecs
número

Opcional. O número de segundos que o mongod aguardará até que um secundário elegível alcance o primário.

Quando especificado, secondaryCatchUpPeriodSecs substitui o tempo de espera padrão de 10 segundos ou, se force: true, 0 segundos.

force
booleano

Opcional. Um booleano que determina se o primário será desativado se não houver nenhum secundário elegível e atualizado dentro do período de espera.

Se true, o primário desiste mesmo que não exista nenhum membro secundário adequado; isso pode levar a reversões se um secundário com atraso de replicação se tornar o novo primário.

Se false, o primário não será desativado se não existir nenhum membro secundário adequado e o comando retornar um erro.

Padrão é false.

O comando replSetStepDown tenta encerrar operações de usuário de longa execução que bloqueiam a saída do primário, como uma construção de índice, uma operação de gravação ou um trabalho de redução de mapa.

Em seguida, o comando inicia um período de recuperação em que aguarda até secondaryCatchUpPeriodSeconds, por padrão 10 segundos, para que um secundário fique atualizado com o primário. O primary só é desativado se um secundário estiver atualizado com o primary durante o período de recuperação para evitar rollbacks.

Se nenhum secundário elegível atender a esse critério até o final do período de espera, o primário não será rebaixado e o comando apresentará erros. Você pode substituir esse comportamento e emitir com o comando com a opção force: true para descer imediatamente o primary.

Uma vez que o primário se retira com sucesso, esse nó não pode se tornar o primário pelo restante do período replSetStepDown: <seconds> , que começou quando o nó recebeu o comando.

replSetStepDown o comando não fecha todas as conexões do cliente.

Observação

Todas as gravações para o primário falham durante o período que começa quando o comando replSetStepDown é recebido até que uma nova primária seja eleita, ou se não houver secundários elegíveis, a primary original retoma a operação normal.

As gravações que estavam em andamento quando replSetStepDown é executado são eliminadas. As transações em andamento também falham com TransientTransactionError e podem ser repetidas como um todo.

O período de tempo em que as gravações falham é no máximo:

secondaryCatchUpPeriodSecs (10s por padrão) + electionTimeoutMillis (10s por padrão).

Quando você rebaixa uma primária usando rs.stepDown() ou replSetStepDown sem definir o campo force como true, a primária rebaixada indica um secundário elegível para convocar uma eleição imediatamente.

O exemplo a seguir, executado no primário atual, tenta reduzir o membro por 120 segundos.

A operação aguarda até os 10 segundos padrão para que um secundário se atualize. Se não existir nenhum secundário adequado, o primário não será desativado e o comando apresentará erro.

Observação

Todas as gravações para o primário falham durante o período que começa quando o comando replSetStepDown é recebido até que uma nova primária seja eleita, ou se não houver secundários elegíveis, a primary original retoma a operação normal.

As gravações que estavam em andamento quando replSetStepDown é executado são eliminadas. As transações em andamento também falham com TransientTransactionError e podem ser repetidas como um todo.

O período de tempo em que as gravações falham é no máximo:

secondaryCatchUpPeriodSecs (10s por padrão) + electionTimeoutMillis (10s por padrão).

db.adminCommand( { replSetStepDown: 120 } )

O exemplo a seguir, executado no primário atual, tenta reduzir o membro por 120 segundos, aguardando até 15 segundos para que um secundário elegível se atualize. Se não existir nenhum secundário adequado, o primário não será desativado e o comando apresentará erro.

Observação

Todas as gravações para o primário falham durante o período que começa quando o comando replSetStepDown é recebido até que uma nova primária seja eleita, ou se não houver secundários elegíveis, a primary original retoma a operação normal.

As gravações que estavam em andamento quando replSetStepDown é executado são eliminadas. As transações em andamento também falham com TransientTransactionError e podem ser repetidas como um todo.

O período de tempo em que as gravações falham é no máximo:

secondaryCatchUpPeriodSecs (10s por padrão) + electionTimeoutMillis (10s por padrão).

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15 } )

O exemplo a seguir, executado no primário atual, tenta reduzir o membro por 120 segundos, aguardando até 15 segundos para que um secundário elegível se atualize. Devido à opção force: true , o primário desiste mesmo que não exista um secundário adequado.

Observação

Todas as gravações para o primário falham durante o período que começa quando o comando replSetStepDown é recebido até que uma nova primária seja eleita, ou se não houver secundários elegíveis, a primary original retoma a operação normal.

As gravações que estavam em andamento quando replSetStepDown é executado são eliminadas. As transações em andamento também falham com TransientTransactionError e podem ser repetidas como um todo.

O período de tempo em que as gravações falham é no máximo:

secondaryCatchUpPeriodSecs (10s por padrão) + electionTimeoutMillis (10s por padrão).

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15, force: true } )

Dica

Veja também:

Voltar

replSetResizeOplog