Descripción
replSetStepDownInstruye al La primaria del conjunto de réplicas se convertirá en secundaria. Tras la desvinculación de la primaria, las secundarias elegibles celebran una elección para la primaria.
El comando no relega inmediatamente al primario. Si no
electablehay secundarios actualizados con el primario, este espera hastasecondaryCatchUpPeriodSecs(por defecto,10 segundos) a que un secundario se ponga al día. Una vez que un secundario elegible esté disponible, el comando relega al primario.Una vez retirado, el primario original se convierte en secundario y no podrá volver a ser primario durante el tiempo restante especificado por
replSetStepDown: <seconds>.Para obtener una explicación detallada de la ejecución del comando, consulte Comportamiento.
Nota
El comando solo es válido contra el miembro principal y genera un error si se ejecuta en un miembro no principal.
Tip
mongoshEn, este comando también se puede ejecutar a través del métodors.stepDown()auxiliar.Los métodos asistente son convenientes para usuarios de
mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.El
replSetStepDownsolo puede ejecutarse en la base de datosadmin.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Importante
Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { replSetStepDown: <seconds>, secondaryCatchUpPeriodSecs: <seconds>, force: <true|false> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| Número | El número de segundos para reducir el miembro principal, durante el cual el miembro de reducción no puede convertirse en principal. Si se especifica un valor no numérico, el comando utiliza El período de reducción comienza desde el momento en que recibe el comando. El período de reducción debe ser |
| Número | Opcional. El número de segundos que esperará a que un secundario elegible alcance al Cuando se especifica, |
| booleano | Opcional. Un valor booleano que determina si el primario se reduce si no existe un secundario elegible y actualizado dentro del período de espera.
Si Se establece por defecto en |
Comportamiento
Operaciones concurrentes
El replSetStepDown comando intenta finalizar operaciones de usuario de larga ejecución que impiden que el servidor principal deje de funcionar, como una creación de índice, una operación de escritura o un trabajo de reducción de mapa.
Disponibilidad de secundarias elegibles
El comando inicia entonces un periodo de actualización donde espera hasta secondaryCatchUpPeriodSeconds (por 10 defecto, segundos) para que un secundario se actualice con el principal. El principal solo se desconecta si un secundario se actualiza con el principal durante el periodo de actualización para evitar reversiones.
Si ningún secundario elegible cumple este criterio al final del período de espera, el primario no se retira y el comando genera un error. Puede anular este comportamiento y ejecutar un comando con la opción force: true para retirar inmediatamente al primario.
Una vez que el nodo principal finaliza con éxito, ese nodo no puede convertirse en el principal durante el resto del período replSetStepDown: <seconds>, que comenzó cuando el nodo recibió el comando.
Conexiones de cliente
replSetStepDown El comando no cierra todas las conexiones de cliente.
Escribe durante el paso a paso
Nota
Todas las escrituras en el primario fallan durante el período que comienza cuando se recibe el comando replSetStepDown hasta que se elige un nuevo primario o, si no hay secundarios elegibles, el primario original reanuda la operación normal.
Las escrituras en curso al replSetStepDown ejecutarse se cancelan. Las transacciones en curso también fallan con y pueden reintentarse en su TransientTransactionError totalidad.
El período de tiempo en el que las escrituras fallan es máximo:
secondaryCatchUpPeriodSecs (10s por defecto) + electionTimeoutMillis (10s por defecto).
Entrega de elecciones
Cuando se reduce una primaria utilizando rs.stepDown() o sin configurar replSetStepDown el force campo true en, la primaria reducida nomina a un secundario elegible para convocar una elección inmediatamente.
Ejemplos
Bajar con opciones predeterminadas
El siguiente ejemplo, ejecutado en el servidor principal actual, intenta retroceder al miembro durante 120 segundos.
La operación espera hasta los 10 segundos predeterminados para que un secundario se recupere. Si no existe un secundario adecuado, el primario no se reduce y el comando genera un error.
Nota
Todas las escrituras en el primario fallan durante el período que comienza cuando se recibe el comando replSetStepDown hasta que se elige un nuevo primario o, si no hay secundarios elegibles, el primario original reanuda la operación normal.
Las escrituras en curso al replSetStepDown ejecutarse se cancelan. Las transacciones en curso también fallan con y pueden reintentarse en su TransientTransactionError totalidad.
El período de tiempo en el que las escrituras fallan es máximo:
secondaryCatchUpPeriodSecs (10s por defecto) + electionTimeoutMillis (10s por defecto).
db.adminCommand( { replSetStepDown: 120 } )
Especificar el tiempo de espera para la recuperación secundaria
El siguiente ejemplo, ejecutado en el primario actual, intenta bajar el nodo durante 120 segundos, esperando hasta 15 segundos para que un secundario elegible se ponga al día. Si no existe un secundario adecuado, el primario no se retira y el comando genera un error.
Nota
Todas las escrituras en el primario fallan durante el período que comienza cuando se recibe el comando replSetStepDown hasta que se elige un nuevo primario o, si no hay secundarios elegibles, el primario original reanuda la operación normal.
Las escrituras en curso al replSetStepDown ejecutarse se cancelan. Las transacciones en curso también fallan con y pueden reintentarse en su TransientTransactionError totalidad.
El período de tiempo en el que las escrituras fallan es máximo:
secondaryCatchUpPeriodSecs (10s por defecto) + electionTimeoutMillis (10s por defecto).
db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15 } )
Especifica catch up secundario con Forzar bajada de nivel
El siguiente ejemplo, ejecutado en el principal actual, intenta reducir el miembro durante 120 segundos, esperando hasta 15 segundos a que un secundario elegible lo alcance. Gracias a la opción force: true, el principal reduce el miembro incluso si no existe un secundario adecuado.
Nota
Todas las escrituras en el primario fallan durante el período que comienza cuando se recibe el comando replSetStepDown hasta que se elige un nuevo primario o, si no hay secundarios elegibles, el primario original reanuda la operación normal.
Las escrituras en curso al replSetStepDown ejecutarse se cancelan. Las transacciones en curso también fallan con y pueden reintentarse en su TransientTransactionError totalidad.
El período de tiempo en el que las escrituras fallan es máximo:
secondaryCatchUpPeriodSecs (10s por defecto) + electionTimeoutMillis (10s por defecto).
db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15, force: true } )