Docs Menu
Docs Home
/ /

replSetResizeOplog (comando de base de datos)

replSetResizeOplog

replSetResizeOplog También admite la especificación del número mínimo de horas para conservar una entrada de registro de operaciones.

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

replSetResizeOplog le permite cambiar el tamaño del registro de operaciones o su período mínimo de retención de forma dinámica sin reiniciar el sistema. mongod proceso.

Debe ejecutar este comando contra 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 registro de operaciones en Atlas, consulte Establecer ventana mínima de registro de operaciones.

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

doble

El tamaño máximo del oplog en megabytes.

minRetentionHours

doble

Opcional. El número mínimo de horas que se conserva una entrada del registro de operaciones, donde los valores decimales representan fracciones de 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 configurado mongod con minRetentionHours solo elimina una entrada de registro de operaciones si:

  • El oplog ha alcanzado el tamaño máximo configuradoy

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

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

Tip

Puede utilizar replSetResizeOplog en instancias que mongod se ejecuten con el motor de almacenamiento Wired Tiger o el motor de almacenamiento en memoria.

Consulte el tutorial Cambiar el tamaño del registro de operaciones de los miembros del conjunto de réplicas autoadministradas para obtener un procedimiento sobre el uso replSetResizeOplog del comando para cambiar el tamaño del registro de operaciones.

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

No se puede eliminar la local.oplog.rs colección. Para obtener más información sobre esta restricción, consulte Comportamiento de la colección de registros de operaciones.

replSetResizeOplog anula el tamaño máximo del registro de operaciones o el período mínimo de retención del registro de operaciones establecido al inicio mediante:

El nuevo tamaño del registro de operaciones persiste después de reiniciar el servidor, a menos que utilice:

Importante

Al reducir el tamaño máximo del oplog se truncan las entradas del oplog más antiguas hasta que el oplog alcanza el nuevo tamaño configurado.

De manera similar, reducir el período mínimo de retención del oplog da como resultado el truncamiento de las entradas del oplog más antiguas que el período especificado si el oplog ha excedido el tamaño máximo configurado.

El truncamiento del oplog debido a un tamaño reducido del oplog o del período de retención puede generar un comportamiento inesperado en los clientes que aún leen esas entradas del oplog, entre ellos:

  • Los flujos de cambio abiertos pueden quedar invalidados

  • Es posible que los secundarios que no hayan replicado esas entradas del registro de operaciones requieran resincronización.

  • Es posible que las copias de seguridad que utilizan mongodump con contra el miembro no capturen entradas anteriores al truncamiento.--oplog

Un tiene el siguiente comportamiento cuando se configura con un período mínimo de retención de registro de mongod operaciones:

  • 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 registro de operaciones supera su tamaño máximo,mongod puede seguir manteniendo ese espacio en disco incluso si el registro de operaciones vuelve a su tamaño máximo o está configurado para un tamaño máximo menor. Consulte "Reducir el tamaño del registro de operaciones no devuelve inmediatamente el 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 registro de operaciones o el periodo mínimo de retención de un miembro del conjunto de réplicas con replSetResizeOplog no modifica el tamaño del registro de operaciones de ningún otro miembro del conjunto de réplicas. Debe ejecutar replSetResizeOplog en cada miembro del conjunto de réplicas del clúster para cambiar el tamaño del registro de operaciones o el periodo mínimo de retención de todos los miembros.

Reducir el tamaño del registro de operaciones no recupera inmediatamente ese espacio en disco. Esto incluye la reducción del tamaño del registro de operaciones debido al truncamiento de eventos de registro de operaciones anteriores al período mínimo de retención.

Para liberar inmediatamente espacio en disco no utilizado tras reducir el tamaño del registro de operaciones,compact ejecute oplog.rs en la colección de la local base de datos durante un periodo de mantenimiento. compact bloquea todas las operaciones en la base de datos en la que se ejecuta. Por lo tanto, ejecutar compact en oplog.rs impide la sincronización del registro de operaciones. Para obtener información sobre cómo redimensionar el registro de operaciones y compactar,oplog.rs consulte Cambiar el tamaño del registro de operaciones de los miembros del conjunto de réplicas autogestionadas.

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

Para obtener más información sobre el bloqueo en MongoDB, consulte Preguntas frecuentes: Concurrencia.

Utilice el método para mostrar el tamaño máximo actual del registro db.collection.stats() mongosh demaxSize operaciones,, 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 registro de operaciones de este miembro 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

Al reducir el tamaño del registro de operaciones de un nodo, se eliminan datos del mismo. Esto puede provocar que los miembros de la réplica que se sincronizan con ese nodo queden obsoletos. Para resincronizar esos miembros, consulte Resincronizar un miembro de un conjunto de réplicas autoadministradas.

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

  2. Opcional. Use el comando para verificar el valor mínimo actual de retención de registros de db.serverStatus() operaciones oplogTruncation.oplogMinRetentionHours como:

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

    El comando devuelve el periodo mínimo de retención del registro de operaciones configurado actualmente para. Por mongod ejemplo:

    1.5

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

  3. Utilice el comando replSetResizeOplog para modificar el periodo mínimo de retención de registros de operaciones configurado. Por ejemplo, el siguiente comando establece el periodo mínimo de retención de registros de operaciones en 2 horas:

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

Volver

replSetReconfig

En esta página