Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

replSetResizeOplog (comando de base de datos)

replSetResizeOplog

replSetResizeOplog también permite especificar el número mínimo de horas para conservar una entrada de oplog.

Cambiado en la versión 5.0: Para configurar el tamaño de replSetOplog en mongosh, use el constructor Double().

replSetResizeOplog permite cambiar dinámicamente el tamaño de la Oplog o su periodo mínimo de retención sin tener que reiniciar el mongod procesar.

Debes ejecutar este comando en la base de datos admin.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

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.

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

Nota

Para cambiar el tamaño del oplog en Atlas, consulte Set Minimum oplog window.

El comando tiene la siguiente forma:

db.adminCommand(
{
replSetResizeOplog: <int>,
size: <double>,
minRetentionHours: <double>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

replSetResizeOplog

Int

Se debe establecer en 1.

size

Double

Tamaño máximo del oplog en megabytes.

  • El tamaño mínimo que puede especificar es de 990 megabytes.

  • El tamaño máximo que puedes especificar es de 1 petabyte.

  • Conversión explícita del size como double en mongosh con Double(). Consulte Cambie el tamaño máximo de Oplog.

minRetentionHours

Double

opcional. El número mínimo de horas para preservar una entrada de oplog, donde los valores decimales representan las fracciones de una hora. Por ejemplo, un valor de 1.5 representa una hora y treinta minutos.

El valor debe ser mayor o igual a 0. Un valor de 0 indica que el mongod debe truncar el oplog comenzando con las entradas más antiguas para mantener el tamaño máximo de oplog configurado.

Un mongod configurado con minRetentionHours solo remueve una entrada de oplog si:

  • El oplogha alcanzado el tamaño máximo configurado, y

  • La entrada del oplog es más antigua que el número configurado de horas según el reloj del sistema host.

Para comprobar el periodo mínimo de retención de oplog actualmente configurado, consulte el oplogTruncation.oplogMinRetentionHours en la salida del comando serverStatus.

Tip

Puedes usar replSetResizeOplog en mongod instancias que se ejecutan con el motor de almacenamiento Wired Tiger o el motor de almacenamiento en memoria.

Consulte el tutorial Cambiar el tamaño del Oplog de los miembros de réplicas autogestionados para conocer el procedimiento sobre el uso del comando replSetResizeOplog para cambiar el tamaño del Oplog.

El oplog puede crecer más allá de su límite de tamaño configurado para evitar borrar el majority commit point.

No puedes descartar la colección local.oplog.rs. Para obtener más información sobre esta restricción, consulte Comportamiento de la colección Oplog.

replSetResizeOplog anula el tamaño máximo del oplog o el periodo mínimo de retención del oplog establecido al inicio por:

El nuevo tamaño de oplog se mantiene después de reiniciar el servidor, a menos que uses:

Importante

Reducir el tamaño máximo del oplog da lugar a la truncación de las entradas de oplog más antiguas hasta que el oplog alcance el nuevo tamaño configurado.

Del mismo modo, reducir el periodo mínimo de retención del oplog provoca el truncamiento de las entradas del oplog más antiguas que el periodo especificado si el oplog ha superado el tamaño máximo configurado.

La truncación del Oplog debido a una reducción del tamaño del Oplog o del período de retención puede resultar en un comportamiento inesperado de los clientes que todavía están leyendo dichas entradas del Oplog, incluyendo:

  • Los change streams abiertos pueden invalidarse

  • Los Secundarios que no han replicado esas entradas de oplog podrían requerir resincronización.

  • Las copias de seguridad utilizando mongodump con --oplog contra el nodo pueden que no capturen las entradas anteriores al truncamiento.

Una mongod tiene el siguiente comportamiento cuando está configurada con un periodo mínimo de retención de oplog:

  • El oplog puede crecer sin restricciones para retener las entradas del oplog durante el número de horas configurado. Esto puede resultar en la reducción o el agotamiento del espacio en disco del sistema debido a una combinación de un alto volumen de guardado y un largo período de retención.

  • Si el oplog crece más allá de su tamaño máximo, el mongod puede seguir ocupando ese espacio en disco incluso si el oplog vuelve a su tamaño máximo o está configurado para un tamaño máximo menor. Consulta Reducir el tamaño de Oplog no libera inmediatamente espacio en disco.

  • El mongod compara el reloj de pared del sistema con el tiempo de creación del reloj de pared de una entrada de oplog al aplicar la retención de entradas de oplog. La deriva de reloj entre los componentes del clúster puede dar lugar a un comportamiento inesperado de retención de oplog. Consulta la sincronización del reloj para obtener más información sobre esta sincronización entre los miembros del clúster.

Cambiar el tamaño del oplog o el período mínimo de retención del oplog de un nodo del set de réplicas específico con replSetResizeOplog no afecta el tamaño del oplog de ningún otro nodo del set de réplicas. Debe ejecutar replSetResizeOplog en cada miembro del conjunto de réplicas en su clúster para cambiar el tamaño del oplog o el período mínimo de retención para todos los miembros.

Reducir el tamaño del oplog no recupera inmediatamente ese espacio en disco. Esto incluye la reducción del tamaño del oplog debido a la truncación de eventos de oplog anterior al período mínimo de retención del oplog.

Para liberar inmediatamente el espacio no utilizado en disco después de reducir el tamaño del oplog, ejecuta compact en la colección oplog.rs de la base de datos local durante un período de mantenimiento. compact bloquea todas las operaciones en la base de datos en la que se ejecuta. Por lo tanto, ejecutar compact contra oplog.rs impide la sincronización del oplog. Para obtener información sobre cómo cambiar el tamaño del oplog y compactar oplog.rs, consulta Cambiar el tamaño del oplog de los miembros de conjuntos de réplicas autogestionados.

replSetResizeOplog toma un bloqueo exclusivo (W) en el oplog y bloquea otras operaciones en la colección hasta que finalice.

Para obtener más información sobre el bloqueo en MongoDB, consulta FAQ: Concurrency.

Utiliza el método db.collection.stats() mongosh para mostrar el tamaño máximo actual del oplog, maxSize, en megabytes. Por ejemplo:

db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize

El comando anterior devuelve el tamaño de registro de operaciones de este nodo en megabytes:

990

El siguiente comando utiliza replSetResizeOplog para cambiar el tamaño del oplog de este nodo a 16384 megabytes:

db.adminCommand({ "replSetResizeOplog": 1, size: Double(16384)})

Para verificar el nuevo tamaño de oplog, vuelva a ejecutar el método db.collection.stats():

db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize

El comando anterior devuelve:

"maxSize": Long("16834")

Advertencia

Reducir el tamaño del oplog en un nodo remueve datos del mismo. Esto puede provocar que los miembros réplicas que se sincronizan con ese nodo se vuelvan obsoletos. Para volver a sincronizar esos miembros, consulta Volver a sincronizar a un nodo de un set de réplicas autogestionado.

  1. Conecta mongosh al miembro del conjunto de réplicas mongod.

  2. opcional. Utiliza el comando db.serverStatus() para verificar el valor actual mínimo de retención de oplog como oplogTruncation.oplogMinRetentionHours:

    db.getSiblingDB("admin").serverStatus().oplogTruncation.oplogMinRetentionHours

    El comando devuelve el período mínimo actualmente configurado para la retención de Oplog en mongod. Por ejemplo:

    1.5

    Si el mongod no tiene un período mínimo de retención de oplog, la operación devuelve un resultado vacío.

  3. Use el comando replSetResizeOplog para modificar el período mínimo de retención de oplog configurado. Por ejemplo, lo siguiente establece el período mínimo de retención de oplog en 2 horas:

    db.adminCommand({
    "replSetResizeOplog" : 1,
    "minRetentionHours" : 2
    })

Volver

replSetReconfig

En esta página