Descrição
replSetStepDownInstrui o primário do conjunto de réplicas a se tornar um secundário. Depois que o primário é desativado, os secundários qualificados realizam uma eleição para primário.
O comando não diminui imediatamente o primary. Se nenhum secundário
electableestiver 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 auxiliarrs.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
replSetStepDownsó pode ser executado no banco de dadosadmin.
Compatibilidade
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
Importante
Este comando não é suportado em clusters MongoDB Atlas . Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos não suportados.
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { replSetStepDown: <seconds>, secondaryCatchUpPeriodSecs: <seconds>, force: <true|false> } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| 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á O período de recuo começa a partir do momento em que o |
| número | Opcional. O número de segundos que o Quando especificado, |
| 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 Se Padrão é |
Comportamento
Operações simultâneas
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.
Disponibilidade de secundários qualificados
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.
Conexões de clientes
replSetStepDown o comando 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 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).
Transferência de eleiçã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.
Exemplos
Reduza as opções padrão
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 } )
Especifique o tempo de espera para a recuperação secundária
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 } )
Especifique a recuperação secundária com redução de força
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 } )