rs.stepDown()
Nesta página
Descrição
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âmetroTipoDescriçãostepDownSecs
númeroO 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 quesecondaryCatchUpPeriodSecs
.secondaryCatchUpPeriodSecs
númeroOpcional. 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 de10
segundos.
Comportamento
Operações simultâneas
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.
Disponibilidade de secundários qualificados
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.
Conexões de clientes
rs.stepDown()
O método não fecha todas as conexões do cliente.
Grava durante o recuo
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).
Transferência de eleiçã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.