MongoDB utiliza el registro de escritura anticipada en un disco diario para garantizar la durabilidad de la operación de escritura.
El motor de almacenamiento WiredTiger no requiere registro en diario para garantizar un estado consistente tras un fallo. La base de datos se restaurará al último punto de control consistente durante la recuperación. Sin embargo, si MongoDB se cierra inesperadamente entre puntos de control, se requiere registro en diario para recuperar las escrituras realizadas después del último punto de control.
Nota
No se puede especificar --nojournal opción o storage.journal.enabled: false para los miembros del conjunto de réplicas que utilizan el motor de almacenamiento WiredTiger.
Con el registro en diario habilitado, si se detiene inesperadamente, el programa puede recuperar todo lo escrito en el diario. MongoDB volverá a aplicar las operaciones de escritura al reiniciar y mantendrá un estado consistente. Por defecto, la mayor cantidad de escrituras perdidas (es decir, las que no se realizan en el diario) son las realizadas en los últimos mongod 100 milisegundos, más el tiempo que tarda en realizarse la escritura en el commitIntervalMs diario. Consulte para obtener más información sobre la configuración predeterminada.
Procedimientos
Deshabilitar el registro en diario
Advertencia
No desactive el registro en diario en los sistemas de producción.
No se puede especificar la opción
--nojournalostorage.journal.enabled: falsepara los miembros del conjunto de réplicas que utilizan el motor de almacenamiento WiredTiger.
Para deshabilitar el registro en diario para una implementación independiente, inicie mongod con la --nojournal opción de línea de comando.
Obtener reconocimiento de compromiso
Puede obtener una confirmación de confirmación con la opción "Escribir preocupación" y la j opción. Para más detalles,consulte "Escribir preocupación".
Monitorear el estado del diario
El serverStatus comando /método devuelve, que contiene estadísticas sobre eldb.serverStatus() wiredTiger.logdiario.
Recuperar datos después de un apagado inesperado
Al reiniciarse tras un fallo, MongoDB reproduce todos los archivos de diario en el directorio de diario antes de que el servidor esté disponible. Si MongoDB debe reproducir archivos de diario, mongod registra estos eventos en la salida del registro.
No hay razón para ejecutar --repair.
Cambiar el compresor del diario WiredTiger
Con el motor de almacenamiento WiredTiger, MongoDB utiliza, por defecto, el snappy compresor para el diario. Para especificar un algoritmo de compresión diferente o ninguna compresión para una mongod instancia:
Tip
Si durante este procedimiento se produce un apagado incorrecto de mongod un, debe usar la configuración anterior del compresor para recuperarse usando los archivos de registro. Una vez recuperado, puede reintentar el procedimiento.
Utilice el siguiente procedimiento para cambiar el compresor de diario para una instancia mongod independiente:
Actualice la configuración al nuevo
storage.wiredTiger.engineConfig.journalCompressorvalor.Si utiliza opciones de línea de comandos en lugar de un archivo de configuración, deberá actualizar la
--wiredTigerJournalCompressoropción de línea de comandos durante el reinicio a continuación.Realice un apagado limpio de la instancia
mongod. Por ejemplo, conectemongosha la instancia y ejecutedb.shutdownServer():db.getSiblingDB('admin').shutdownServer() Una vez que haya confirmado que el proceso ya no se está ejecutando, reinicie la
mongodinstancia:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si está utilizando opciones de línea de comandos en lugar de un archivo de configuración, actualice la
--wiredTigerJournalCompressoropción.mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
Utilice el siguiente procedimiento para cambiar el compresor de diario de un miembro de un conjunto de réplicas:
Nota
El siguiente procedimiento implica reiniciar el miembro de réplica como independiente sin el diario.
Realice un apagado limpio de la instancia
mongod. Por ejemplo, conectemongosha la instancia y ejecutedb.shutdownServer():db.getSiblingDB('admin').shutdownServer() Actualice el archivo de configuración para prepararse para reiniciar como independiente:
Configurar
storage.journal.enabledafalse.Comente la configuración de replicación para su implementación.
Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen lasetParametersección.
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.
Reinicie la
mongodinstancia:Si estás usando un archivo de configuración:
mongod -f <path/to/myconfig.conf> Si está utilizando opciones de línea de comandos en lugar de un archivo de configuración,
Incluye la opción
--nojournalElimine cualquier opción de línea de comandos de replicación
--replSet(como):Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen la--setParameteropción.mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
Realice un apagado limpio de la
mongodinstancia:db.getSiblingDB('admin').shutdownServer() Confirme que el proceso ya no está en ejecución.
Actualice el archivo de configuración para prepararse para reiniciar como miembro del conjunto de réplicas con el nuevo compresor de diario:
Remueve la configuración
storage.journal.enabled.Descomente la configuración de replicación para su implementación.
Eliminar el parámetro
disableLogicalSessionCacheRefresh.Elimine la configuración para utilizar el compresor de diario predeterminado o especifique un nuevo
storage.wiredTiger.engineConfig.journalCompressorvalor.
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
mongodinstancia como miembro del conjunto 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:
Eliminar la
--nojournalopción.Elimine la
--wiredTigerJournalCompressoropción de línea de comandos para utilizar el compresor de diario predeterminado o actualizar a un nuevo valor.Incluya las opciones de línea de comandos de replicación, así como cualquier opción adicional para los miembros de su conjunto de réplicas.
Eliminar el parámetro
disableLogicalSessionCacheRefresh.
mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...
Utilice el siguiente procedimiento para cambiar el compresor de diario de un miembro de un conjunto de réplicas de fragmentos o de un conjunto de réplicas de servidor de configuración:
Nota
El siguiente procedimiento implica reiniciar el miembro de réplica como independiente sin el diario.
Realice un apagado limpio de la instancia
mongod. Por ejemplo, conectemongosha la instancia y ejecutedb.shutdownServer():db.getSiblingDB('admin').shutdownServer() Actualice el archivo de configuración para prepararse para reiniciar como independiente:
Configurar
storage.journal.enabledafalse.Establezca el parámetro en
skipShardingConfigurationChecksverdadero.Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen lasetParametersección.Comente la configuración de replicación para su implementación.
Comente la
sharding.clusterRoleconfiguración.Establezca en el puerto actual del miembro, si no está configurado
net.portexplí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.
Reinicie 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
--nojournalopción.Establezca el parámetro en
skipShardingConfigurationChecksverdadero.Establezca el parámetro
disableLogicalSessionCacheRefreshentrueen la--setParameteropción.Elimine cualquier opción de línea de comandos de replicación
--replSet(como).Eliminar la opción
--shardsvr--configsvr/.Incluya explícitamente establecido en el puerto actual de la
--portinstancia.
mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
Realice un apagado limpio de la
mongodinstancia:db.getSiblingDB('admin').shutdownServer() Confirme que el proceso ya no está en ejecución.
Actualice el archivo de configuración para prepararse para reiniciar con el nuevo compresor de diario:
Remueve la configuración
storage.journal.enabled.Eliminar la
skipShardingConfigurationChecksconfiguración del parámetro.Eliminar la configuración del parámetro
disableLogicalSessionCacheRefresh.Descomente la configuración de replicación para su implementación.
Descomente la
sharding.clusterRoleconfiguración.Elimine la configuración para utilizar el compresor de diario predeterminado o especifique un nuevo
storage.wiredTiger.engineConfig.journalCompressorvalor.
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
mongodinstancia como miembro del conjunto 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:
Eliminar la
--nojournalopción.Eliminar la
skipShardingConfigurationChecksconfiguración del parámetro.Eliminar el parámetro
disableLogicalSessionCacheRefresh.Elimine la
--wiredTigerJournalCompressoropción de línea de comandos para utilizar el compresor de diario predeterminado o actualizar a un nuevo valor.Incluir
--shardsvrla--configsvropción /.Incluya las opciones de línea de comandos de replicación, así como cualquier opción adicional para los miembros de su conjunto de réplicas.
mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...