Descrição
replSetStepDownInstrui 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 realizam uma eleição para as primárias.
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, consulte Comportamento.
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
In
mongosh, this command can also be run through thers.stepDown()helper method.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.The
replSetStepDowncan only run on theadmindatabase.
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 é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a 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
The replSetStepDown command attempts to terminate long running user operations that block the primary from stepping down, such as an index build, a write operation or a map-reduce job.
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
All writes to the primary fail during the period starting when the replSetStepDown command is received until either a new primary is elected, or if there are no electable secondaries, the original primary resumes normal operation.
Writes that were in progress when replSetStepDown is run are killed. In-progress transactions also fail with TransientTransactionError and can be retried as a whole.
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
When you step down a primary using rs.stepDown() or replSetStepDown without setting the force field to true, the stepped-down primary nominates an eligible secondary to call an election immediately.
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
All writes to the primary fail during the period starting when the replSetStepDown command is received until either a new primary is elected, or if there are no electable secondaries, the original primary resumes normal operation.
Writes that were in progress when replSetStepDown is run are killed. In-progress transactions also fail with TransientTransactionError and can be retried as a whole.
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
All writes to the primary fail during the period starting when the replSetStepDown command is received until either a new primary is elected, or if there are no electable secondaries, the original primary resumes normal operation.
Writes that were in progress when replSetStepDown is run are killed. In-progress transactions also fail with TransientTransactionError and can be retried as a whole.
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
All writes to the primary fail during the period starting when the replSetStepDown command is received until either a new primary is elected, or if there are no electable secondaries, the original primary resumes normal operation.
Writes that were in progress when replSetStepDown is run are killed. In-progress transactions also fail with TransientTransactionError and can be retried as a whole.
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