MongoDB utiliza registro por adelantado de escritura en un disco bitácora para garantizar la durabilidad de la operación de guardar.
El motor de almacenamiento WiredTiger no requiere registro en diario para garantizar un estado coherente después de un fallo. La base de datos se restaurará al último punto de control coherente durante la recuperación. Sin embargo, si MongoDB se cierra inesperadamente entre puntos de control, se requiere registrar en la bitácora para recuperar las escrituras que ocurrieron después del último punto de control.
Nota
No se puede especificar --nojournal opción o storage.journal.enabled: false para los miembros del set de réplicas que utilizan el motor de almacenamiento WiredTiger.
Con la bitácora habilitada, si mongod se detiene inesperadamente, el programa puede recuperar todo lo escrito en la bitácora. MongoDB volverá a aplicar las operaciones de escritura al reiniciar y mantendrá un estado coherente. Por defecto, la mayor medida de escrituras perdidas, es decir, las que no se realizan en el diario, son aquellas realizadas en los últimos 100 milisegundos, más el tiempo que se tarda en realizar las escrituras reales en el diario. Consulta commitIntervalMs para obtener más información sobre el valor por defecto.
Procedimientos
Desactivar registrar en la bitácora
Advertencia
No desactive el registrar en la bitácora en los sistemas de producción.
No puedes especificar la opción
--nojournalostorage.journal.enabled: falsepara los miembros del conjunto de réplicas que usan el motor de almacenamiento WiredTiger.
Para desactivar el registro de diarios en una implementación autónoma, inicie mongod con la opción de línea de comandos --nojournal.
Obtener el Acuse de Recibido del Compromiso
Puedes obtener un reconocimiento de confirmación con el nivel de confirmación de escritura (write concern) y con la opción j. Para más detalles, consulta nivel de confirmación de escritura (Write Concern).
Supervisar estado del día
El comando serverStatus / métododb.serverStatus() devuelve wiredTiger.log, que contiene estadísticas sobre el diario.
Recuperar datos después de un apagado inesperado
En un reinicio después de un bloqueo, MongoDB reproduce todos los archivos de registro en el directorio de registro antes de que el servidor esté disponible. Si MongoDB debe reproducir archivos de registro, mongod registra estos eventos en la salida del registro.
No hay razón para ejecutar --repair.
Cambiar el compresor del diario de WiredTiger
Con el motor de almacenamiento WiredTiger, MongoDB usa por defecto el compresor snappy para el journal. Para especificar un algoritmo de compresión diferente o sin compresión para una instancia de mongod:
Tip
Si se produce un apagado incontrolado de un mongod durante este procedimiento, se debe utilizar la configuración del compresor antigua para recuperarse utilizando los archivos de registro. Una vez recuperado, puedes volver a intentar el procedimiento.
Utilice el siguiente procedimiento para cambiar el compresor de registros de una instancia mongod autónomo:
Actualiza la configuración
storage.wiredTiger.engineConfig.journalCompressoral nuevo valor.Si usa opciones de línea de comando en lugar de un archivo de configuración, tendrá que actualizar la opción de línea de comando
--wiredTigerJournalCompressordurante el reinicio a continuación.Realiza un apagado limpio de la instancia
mongod. Por ejemplo, conectamongosha la instancia y emitedb.shutdownServer():db.getSiblingDB('admin').shutdownServer() Una vez que haya confirmado que el proceso ya no se está ejecutando, reinicie la instancia
mongod:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si usas opciones de línea de comandos en lugar de un archivo de configuración, actualiza la opción
--wiredTigerJournalCompressor.mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
Utiliza el siguiente procedimiento para cambiar el compresor de registro para un nodo de un set de réplicas:
Nota
El siguiente procedimiento implica reiniciar el nodo de réplica como autónomo sin el diario.
Realiza un apagado limpio de la instancia
mongod. Por ejemplo, conectamongosha la instancia y emitedb.shutdownServer():db.getSiblingDB('admin').shutdownServer() Actualiza el archivo de configuración para prepararte para reiniciar como autónomo:
Configurar
storage.journal.enabledafalse.Comenta la configuración de replicación para tu implementación.
Establece el parámetro
disableLogicalSessionCacheRefreshentrueen la secciónsetParameter.
Por ejemplo:
storage: journal: enabled: false #replication: # replSetName: replA setParameter: disableLogicalSessionCacheRefresh: true Si utiliza opciones de línea de comandos en lugar de un archivo de configuración, deberá actualizar la opción de línea de comandos durante el reinicio.
Reinicia la
mongodinstancia:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si utilizas opciones de línea de comando en lugar de un archivo de configuración,
Incluye la opción
--nojournalRemover cualquier opción de línea de comandos de replicación (como
--replSet):Configura el parámetro
disableLogicalSessionCacheRefreshatrueen la opción--setParameter.mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
Realiza un apagado limpio de la instancia
mongod:db.getSiblingDB('admin').shutdownServer() Confirma que el proceso ya no se esté ejecutando.
Actualiza el archivo de configuración para prepararse para reiniciar como miembro de un set de réplicas con el nuevo compresor de diario:
Remueve la configuración
storage.journal.enabled.Descomenta la configuración de replicación para tu entorno de implementación.
Remueva el parámetro
disableLogicalSessionCacheRefresh.Remueve la configuración
storage.wiredTiger.engineConfig.journalCompressorpara utilizar el compresor de diario por defecto o especifica un nuevo valor.
Por ejemplo:
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: replA Si utilizas opciones de línea de comandos en lugar de un archivo de configuración, tendrás que actualizar las opciones de línea de comandos durante el reinicio a continuación.
Reinicie la instancia
mongodcomo miembro del set de réplicas:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si estás utilizando opciones de línea de comandos en lugar de un archivo de configuración:
Remueve la opción
--nojournal.Elimine la opción de línea de comandos
--wiredTigerJournalCompressorpara usar el compresor de registro por defecto o actualice a un nuevo valor.Incluye tus opciones de la línea de comandos de replicación, así como las opciones adicionales para tu miembro del set de réplicas.
Remueva el parámetro
disableLogicalSessionCacheRefresh.
mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...
Utiliza el siguiente procedimiento para cambiar el compresor del journal para un miembro de un conjunto de réplicas de particiones o un conjunto de réplicas de servidores de configuración:
Nota
El siguiente procedimiento implica reiniciar el nodo de réplica como autónomo sin el diario.
Realiza un apagado limpio de la instancia
mongod. Por ejemplo, conectamongosha la instancia y emitedb.shutdownServer():db.getSiblingDB('admin').shutdownServer() Actualiza el archivo de configuración para prepararte para reiniciar como autónomo:
Configurar
storage.journal.enabledafalse.Establece el parámetro
skipShardingConfigurationChecksen verdadero.Establece el parámetro
disableLogicalSessionCacheRefreshentrueen la secciónsetParameter.Comenta la configuración de replicación para tu implementación.
Comenta la configuración de
sharding.clusterRole.Establezca el
net.porten el puerto actual del nodo, si no está configurado explícitamente.
Por ejemplo:
storage: journal: enabled: false setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr net: port: 27218 Si utiliza opciones de línea de comandos en lugar de un archivo de configuración, deberá actualizar la opción de línea de comandos durante el reinicio.
Reinicia la
mongodinstancia:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si estás utilizando opciones de línea de comandos en lugar de un archivo de configuración:
Incluya la opción
--nojournal.Establece el parámetro
skipShardingConfigurationChecksen verdadero.Configura el parámetro
disableLogicalSessionCacheRefreshatrueen la opción--setParameter.Elimine cualquier opción de línea de comandos de replicación (como
--replSet).Remueve la opción
--shardsvr/--configsvr.Incluye explícitamente
--portconfigurado al puerto actual de la instancia.
mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
Realiza un apagado limpio de la instancia
mongod:db.getSiblingDB('admin').shutdownServer() Confirma que el proceso ya no se esté ejecutando.
Actualiza el archivo de configuración para prepararte para reiniciar con el nuevo compresor de diario:
Remueve la configuración
storage.journal.enabled.Remueve la configuración del parámetro
skipShardingConfigurationChecks.Remueva la configuración del parámetro
disableLogicalSessionCacheRefresh.Descomenta la configuración de replicación para tu entorno de implementación.
Descomenta la configuración
sharding.clusterRole.Remueve la configuración
storage.wiredTiger.engineConfig.journalCompressorpara utilizar el compresor de diario por defecto o especifica un nuevo valor.
Por ejemplo:
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: shardA sharding: clusterRole: shardsvr net: port: 27218 Si utilizas opciones de línea de comandos en lugar de un archivo de configuración, tendrás que actualizar las opciones de línea de comandos durante el reinicio a continuación.
Reinicie la instancia
mongodcomo miembro del set de réplicas:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si estás utilizando opciones de línea de comandos en lugar de un archivo de configuración:
Remueve la opción
--nojournal.Remueve la configuración del parámetro
skipShardingConfigurationChecks.Remueva el parámetro
disableLogicalSessionCacheRefresh.Elimine la opción de línea de comandos
--wiredTigerJournalCompressorpara usar el compresor de registro por defecto o actualice a un nuevo valor.Incluye la opción
--shardsvr/--configsvr.Incluye tus opciones de la línea de comandos de replicación, así como las opciones adicionales para tu miembro del set de réplicas.
mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...