replSetStepDown
Descrição
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 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
replSetStepDown
só pode ser executado no banco de dadosadmin
.
Compatibilidade
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
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 } )