Docs Menu
Docs Home
/ /

fsync (comando de base de datos)

fsync

Vacía todas las escrituras pendientes de la capa de almacenamiento al disco. Cuando el campo lock se establece en true, se establece un bloqueo en el servidor o clúster para evitar escrituras adicionales hasta que se libere el bloqueo.

A partir de MongoDB 7.1 (también disponible a partir de 7.0.2, 6.0.11 y 5.0.22) los fsync y fsyncUnlock Se pueden ejecutar comandos en para bloquear y desbloquear un clúster mongos fragmentado.

A medida que las aplicaciones escriben datos, MongoDB registra los datos en la capa de almacenamiento y luego escribe los datos en el disco.

Ejecute fsync cuando desee vaciar las escrituras en el disco.

Para proporcionar datos duraderos, WiredTiger utiliza puntos de control. Para obtener más detalles, consulta Registro en la bitácora y motor de almacenamiento WiredTiger.

Importante

Los servidores mantienen un recuento de bloqueos fsync. El fsync El comando con el lock campo establecido en true incrementa el recuento de bloqueos, mientras que el comando lo disminuye. Para habilitar las escrituras fsyncUnlock fsyncUnlock en un servidor o clúster bloqueado, ejecute el comando hasta que el recuento de bloqueos llegue a cero.

Utilice este comando para bloquear escrituras cuando desee realizar operaciones de copia de seguridad.

Tip

mongoshEn, este comando también se puede ejecutar a través del método db.fsyncLock() 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.

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.

El comando tiene la siguiente sintaxis:

db.adminCommand(
{
fsync: 1,
lock: <Boolean>,
fsyncLockAcquisitionTimeout: <integer>,
comment: <any>
}
)

El comando tiene los siguientes campos:

Campo
Tipo
Descripción

fsync

entero

Introduzca "1" para fsync aplicar.

fsyncLockAcquisitionTimeoutMillis

entero

Opcional. Especifica el tiempo de espera (en milisegundos) para adquirir bloqueos. Si se agota el tiempo de espera para la adquisición de bloqueos, el comando devuelve una respuesta fallida.

Por defecto: 90000

Nuevo en la versión 7.1.

lock

booleano

Opcional. Bloquea el servidor o clúster y bloquea todas las operaciones de escritura. Cada operación fsync con lock bloquea el servidor o clúster.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

fsync El comando con la lock opción garantiza que los archivos de datos se puedan copiar de forma segura mediante utilidades de copia de seguridad de bajo nivel cp como, scp taro. Un que empieza a usar los archivos copiados contiene datos escritos por el usuario que son indistinguibles de los datos escritos por el usuario en mongod el mongod bloqueado.

Los archivos de datos de un bloqueado mongod pueden cambiar debido a operaciones como sincronizaciones de registro o instantáneas de WiredTiger. Si bien esto no afecta a los datos lógicos (por ejemplo, a los datos a los que acceden los clientes), algunas utilidades de copia de seguridad pueden detectar estos cambios y emitir advertencias o errores. Para obtener más información sobre las utilidades y procedimientos de copia de seguridad recomendados por MongoDB, consulte Métodos de copia de seguridad para una implementación autogestionada.

Nuevo en la versión 7.1.

Cuando el fsync comando se ejecuta en, realiza la operación fsync en todo el clúster. Al establecer mongos el lock campo true en, se establece un bloqueo en el clúster, lo que impide escrituras adicionales.

Para realizar una copia de seguridad autogestionada utilizable, antes de bloquear un clúster fragmentado:

  • Asegúrese de que no haya operaciones de migración de fragmentos, re-fragmentación o DDL activas.

  • Detén el balanceador para evitar que se inicien migraciones adicionales de fragmentos.

Importante

mongod utiliza el registro en diario para mejorar la durabilidad. Utilice una herramienta de instantáneas a nivel de sistema de archivos o volumen/bloque para crear una copia de seguridad del conjunto de datos y del registro en una sola unidad.

El fsync comando devuelve un documento que incluye un lockCount campo. Al ejecutarse en, el recuento indica la cantidad de bloqueos fsync establecidos en el mongod servidor.

Cuando se ejecuta en un clúster fragmentado, envía la operación fsync a cada fragmento y devuelve los resultados, quemongos incluyen lockCount para cada uno.

Nota

Si el lockCount campo es mayor que cero, se bloquean todas las escrituras en el servidor y el clúster. Para reducir el número de bloqueos, utilice el fsyncUnlock comando.

Los bloqueos Fsync se ejecutan en el servidor principal en un conjunto de réplicas o un clúster fragmentado.

Si el servidor principal falla o se vuelve inaccesible debido a problemas de red, el clúster elige uno nuevo entre los servidores secundarios disponibles. Si un servidor principal con bloqueo fsync falla, el nuevo servidor principal no conserva dicho bloqueo y puede gestionar operaciones de escritura. Cuando se realizan elecciones durante las operaciones de copia de seguridad, la copia de seguridad resultante puede ser inconsistente o inutilizable.

Para recuperarse de la caída primaria:

  1. Ejecute el comando hasta que el recuento de bloqueos llegue a cero para liberar el bloqueo en todos los fsyncUnlock nodos.

  2. Emita el comando para restablecer el bloqueo fsync en el fsync clúster.

  3. Reiniciar la copia de seguridad.

Además, los bloqueos fsync son persistentes. Cuando el nodo principal anterior se vuelva a conectar, deberá usar el fsyncUnlock comando para liberar el bloqueo en el nodo.

Nota

fsync El comando con la lock opción garantiza que los archivos de datos se puedan copiar de forma segura mediante utilidades de copia de seguridad de bajo nivel cp como, scp taro. Un que empieza a usar los archivos copiados contiene datos escritos por el usuario que son indistinguibles de los datos escritos por el usuario en mongod el mongod bloqueado.

Los archivos de datos de un bloqueado mongod pueden cambiar debido a operaciones como sincronizaciones de registro o instantáneas de WiredTiger. Si bien esto no afecta a los datos lógicos (por ejemplo, a los datos a los que acceden los clientes), algunas utilidades de copia de seguridad pueden detectar estos cambios y emitir advertencias o errores. Para obtener más información sobre las utilidades y procedimientos de copia de seguridad recomendados por MongoDB, consulte Métodos de copia de seguridad para una implementación autogestionada.

El fsync comando puede bloquear una mongod instancia individual o un clúster fragmentado hasta. Al ejecutarse con mongos el lock campo establecido true en, la operación fsync vacía todos los datos en la capa de almacenamiento y bloquea todas las operaciones de escritura adicionales hasta que se desbloquee la instancia o el clúster.

Para bloquear la base de datos, utilice el comando fsync para establecer el campo lock en true:

db.adminCommand( { fsync: 1, lock: true } )

La operación devuelve un documento que incluye el estado de la operación y el lockCount:

{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"lockCount" : Long(1),
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}

Cuando está bloqueado, las operaciones de escritura se bloquean. Conexiones independientes pueden continuar las operaciones de lectura hasta el primer intento de escritura; luego, también esperan hasta que se desbloquee el servidor o clúster.

Importante

La operación de bloqueo fsync mantiene un recuento de bloqueos.

Para desbloquear un servidor o clúster para escrituras, el recuento de bloqueos debe ser cero. Es decir, para el número de veces que se realiza un bloqueo fsync, se debe ejecutar el número correspondiente de operaciones de desbloqueo para desbloquear el servidor o clúster para escrituras.

Para desbloquear un servidor del clúster, utilice el fsyncUnlock comando:

db.adminCommand( { fsyncUnlock: 1 } )

Repita este comando tantas veces como sea necesario para reducir el número de bloqueos a cero. Una vez que el número de bloqueos llegue a cero, el servidor o clúster podrá reanudar las escrituras.

Para comprobar el estado del bloqueo de fsync,db.currentOp() utilice. Utilice la siguiente función JavaScript en el shell para comprobar si el servidor o el clúster están bloqueados:

serverIsLocked = function () {
var co = db.currentOp();
if (co && co.fsyncLock) {
return true;
}
return false;
}

Después de cargar esta función en su sesión, llámela con la siguiente mongosh sintaxis:

serverIsLocked()

Esta función devolverá true si el servidor o clúster se encuentra actualmente bloqueado y false si el servidor o clúster no está bloqueado.

Volver

filemd5

En esta página