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

rs.stepDown()

Nesta página

  • Descrição
  • Comportamento
rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)

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 método 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. Quando um secundário elegível está disponível, o método diminui 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 stepDownSecs.

Para uma explicação detalhada da execução do método, consulte Comportamento.

Observação

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

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação para comandos de banco de dados nem drivers específicos de linguagem, como Node.js.

Para o comando do banco de dados, consulte o comando replSetStepDown.

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

O método rs.stepDown() tem os seguintes parâmetros:

Parâmetro
Tipo
Descrição
stepDownSecs
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 mongod aguardará até que um secundário elegível alcance o primário.

Quando especificado, o secondaryCatchUpPeriodSecs substitui o tempo de espera padrão de 10 segundos.

O método rs.stepDown() tenta encerrar operações do 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 método 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 primário durante o período de recuperação para evitar rollback.

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 método apresentará erros.

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 stepDownSecs, que começou quando o nó recebeu o método.

rs.stepDown() O método 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 método rs.stepDown() é recebido até que um novo primário seja eleito, ou, se não houver secundários elegíveis, o primário original retoma a operação normal.

As gravações que estavam em andamento quando rs.stepDown() é 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ê reduz um primário usando rs.stepDown() ou replSetStepDown sem definir o campo force como true, o primário reduzido indica um secundário elegível para convocar uma eleição imediatamente.

Voltar

rs.status