Docs Menu
Docs Home
/ /
Replicación

replSetStepDown (comando de base de datos)

replSetStepDown

Instruye 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 electable hay secundarios actualizados con el primario, este espera hasta secondaryCatchUpPeriodSecs (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étodo rs.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 replSetStepDown solo puede ejecutarse en la base de datos admin.

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.

El comando tiene la siguiente sintaxis:

db.adminCommand(
{
replSetStepDown: <seconds>,
secondaryCatchUpPeriodSecs: <seconds>,
force: <true|false>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

replSetStepDown

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 60 segundos.

El período de reducción comienza desde el momento en que recibe el comando. El período de reducción debe ser mongod mayor secondaryCatchUpPeriodSecs que.

secondaryCatchUpPeriodSecs

Número

Opcional. El número de segundos que esperará a que un secundario elegible alcance al mongod primario.

Cuando se especifica, secondaryCatchUpPeriodSecs anula el tiempo de espera predeterminado de 10 segundos o, si es force: true, 0 segundos.

force

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.

trueSi, el primario retrocede incluso si no existe ningún miembro secundario adecuado; esto podría generar retrocesos si un secundario con retraso de replicación se convierte en el nuevo primario.

Si false, el primario no se reduce si no existe un miembro secundario adecuado y el comando devuelve un error.

Se establece por defecto en false.

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.

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.

replSetStepDown El comando no cierra todas las conexiones de cliente.

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).

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.

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 } )

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 } )

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 } )

Volver

Registro de operaciones de cambio de tamaño de conjunto de réplica

En esta página