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
/ /

fsync (comando de base de datos)

fsync

Descarga todas las escrituras pendientes de la capa de almacenamiento al disco. Cuando el campo lock se configura en true, se establece un bloqueo en el servidor o clúster para evitar guardados 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) el fsync y Los fsyncUnlock comandos pueden ejecutarse en mongos para bloquear y desbloquear un clúster sharded.

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

Ejecuta fsync cuando desees volcar las escrituras al 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. Los El fsync comando con el campo lock configurado en true incrementa el contador de bloqueo, mientras que el comando fsyncUnlock lo disminuye. Para habilitar las escrituras en un servidor o clúster bloqueado, llama al comando fsyncUnlock hasta que el recuento de bloqueos llegue a cero.

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

Tip

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

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

Ingrese "1" para aplicar fsync.

fsyncLockAcquisitionTimeoutMillis

entero

opcional. Especifica la cantidad de tiempo en milisegundos para esperar a adquirir bloqueos. Si la operación para adquirir el bloqueo excede el tiempo de espera, el comando devuelve una respuesta fallida.

Por defecto: 90000

Nuevo en la versión 7.1.

lock

booleano

opcional. Toma un bloqueo en el servidor o clúster y bloquea todas las operaciones de escritura. Cada fsync con lock operación toma un bloqueo.

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 mongod bloqueado pueden cambiar debido a operaciones como sincronizaciones de diarios o instantáneas de WiredTiger. Si bien esto no tiene ningún efecto en los datos lógicos (por ejemplo, datos a los que acceden los clientes), algunas utilidades de copia de seguridad pueden detectar estos cambios y emitir advertencias o fallar con 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 comando fsync se ejecuta en mongos, realiza la operación fsync en todo el clúster. Al establecer el campo lock en true, se configura un bloqueo en el clúster, impidiendo guardados adicionales.

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

  • Asegúrese de que no haya ninguna migración de fragmentos, resharding o operaciones DDL activas.

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

Importante

mongod utiliza registrar en la bitácora para mejorar la durabilidad. Utiliza una herramienta de instantáneas a nivel de sistema de archivos o de volumen/bloque para crear una copia de seguridad del conjunto de datos y del registro juntos como una sola unidad.

El comando fsync devuelve un documento que incluye un campo lockCount. Cuando se ejecuta en mongod, el conteo indica la cantidad de bloqueos fsync establecidos en el 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 campo lockCount es mayor que cero, todas las escrituras están bloqueadas en el servidor y en el clúster. Para reducir la cantidad de bloqueos, utiliza el comando fsyncUnlock.

Los bloqueos fsync se ejecutan en el primario en un set de réplicas o clúster.

Si el primario se cae o se vuelve inaccesible debido a problemas de red, el clúster elige un nuevo primario de entre los secundarios disponibles. Si un primario con un bloqueo fsync se cae, el nuevo primario no retiene el bloqueo fsync 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 de la primaria:

  1. Ejecuta el fsyncUnlock comando hasta que la cuenta de bloqueos llegue a cero para liberar el bloqueo en todos los nodos.

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

  3. Reiniciar la copia de seguridad.

Además, los bloqueos fsync son persistentes. Cuando el nodo primario anterior vuelva a estar en línea, deberás usar el comando fsyncUnlock 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 mongod bloqueado pueden cambiar debido a operaciones como sincronizaciones de diarios o instantáneas de WiredTiger. Si bien esto no tiene ningún efecto en los datos lógicos (por ejemplo, datos a los que acceden los clientes), algunas utilidades de copia de seguridad pueden detectar estos cambios y emitir advertencias o fallar con 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 comando fsync puede bloquear una instancia individual de mongod o un clúster particionado a través de mongos. Cuando se ejecuta con el campo lock configurado en true, la operación fsync vacía todos los datos a la capa de almacenamiento y bloquea todas las operaciones de guardar adicionales hasta que desbloquees la instancia o clúster.

Para bloquear la base de datos, utiliza 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 guardar están bloqueadas. Las conexiones separadas pueden continuar realizando operaciones de lectura hasta el primer intento de guardar una operación y luego también esperan hasta que el servidor o clúster sea desbloqueado.

Importante

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

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

Para desbloquear un servidor de clúster, utiliza el fsyncUnlock comando:

db.adminCommand( { fsyncUnlock: 1 } )

Repita este comando tantas veces como sea necesario para reducir el recuento de bloqueos a cero. Una vez que el recuento de bloqueos llegue a cero, el servidor o clúster puede 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 tu sesión mongosh, llámala con la siguiente 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