Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

replSetStepDown (comando de base de datos)

replSetStepDown

Instruye a la 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 baja inmediatamente el principal. Si ningún electable secundario está al día con el primario, el primario espera hasta secondaryCatchUpPeriodSecs (por defecto 10 segundos) para que un secundario se ponga al día. Una vez que haya disponible un secundario elegible, el comando degrada al primario.

Una vez replegado, el primario original se convierte en secundario y no es elegible para volver a ser primario durante el resto del tiempo 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 en el primario y arroja un error si se ejecuta en un miembro que no sea primario.

Tip

En mongosh, este comando también se puede ejecutar a través del método asistente rs.stepDown().

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 degradar el primario, durante el cual el nodo degradado no es elegible para convertirse en primario. Si se especifica un valor no numérico, la 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 el mongod esperará a que un secundario elegible alcance al primario.

Cuando se especifica, secondaryCatchUpPeriodSecs anula el tiempo de espera por defecto de 10 segundos o, si force: true, de 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.

Si true, el primario baja incluso si no existe ningún secundario adecuado; esto podría provocar rollback si un secundario con atraso de la replicación se convierte en el nuevo primario.

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

Se establece por defecto en false.

El comando replSetStepDown intenta terminar las operaciones de usuario de larga duración que bloquean a la primaria para que no se retire, como la creación de índices, una operación de escritura o una tarea de map-reduce.

El comando inicia entonces un periodo de actualización donde espera hasta secondaryCatchUpPeriodSeconds (10 segundos por defecto) para que un servidor secundario se actualice con el servidor principal. El servidor principal solo se desconecta si un servidor 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 renuncia y el comando presenta errores. Puedes anular este comportamiento y emitir el comando con la opción force: true para degradar inmediatamente el primario.

Una vez que el primario baja exitosamente, ese nodo no podrá convertirse en el primario durante el resto del período replSetStepDown: <seconds>, que comenzó cuando el nodo recibió la orden.

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.

Los guardados que estaban en curso cuando se ejecuta replSetStepDown son finalizados. Las transacciones en curso también fallan con TransientTransactionError y se pueden volver a intentar como un todo.

El período de tiempo en el que las escrituras fallan es máximo:

secondaryCatchUpPeriodSecs (10s por defecto) + (10s por electionTimeoutMillis defecto).

Cuando se desciende un primario usando rs.stepDown() o replSetStepDown sin configurar el campo force en true, el primario que se baja nomina un secundario elegible para convocar a una elección inmediatamente.

El siguiente ejemplo, ejecutado en el principal actual, intenta degradar al nodo durante 120 segundos.

La operación espera hasta un máximo de 10 segundos por defecto para que un secundario se ponga al día. Si no existe un secundario adecuado, el primario no se retira y el comando muestra errores.

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.

Los guardados que estaban en curso cuando se ejecuta replSetStepDown son finalizados. Las transacciones en curso también fallan con TransientTransactionError y se pueden volver a intentar como un todo.

El período de tiempo en el que las escrituras fallan es máximo:

secondaryCatchUpPeriodSecs (10s por defecto) + (10s por electionTimeoutMillis 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.

Los guardados que estaban en curso cuando se ejecuta replSetStepDown son finalizados. Las transacciones en curso también fallan con TransientTransactionError y se pueden volver a intentar como un todo.

El período de tiempo en el que las escrituras fallan es máximo:

secondaryCatchUpPeriodSecs (10s por defecto) + (10s por electionTimeoutMillis 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.

Los guardados que estaban en curso cuando se ejecuta replSetStepDown son finalizados. Las transacciones en curso también fallan con TransientTransactionError y se pueden volver a intentar como un todo.

El período de tiempo en el que las escrituras fallan es máximo:

secondaryCatchUpPeriodSecs (10s por defecto) + (10s por electionTimeoutMillis defecto).

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15, force: true } )

Volver

replSetResizeOplog

En esta página