remove remota from drop delete create conexion collection linux mongodb disk

linux - remota - ¿Es seguro borrar el archivo del diario de mongodb?



mongodb create db command line (3)

Como se explica en la respuesta de mnemosyn, el diario es esencial para los motores de almacenamiento. Afortunadamente, se puede controlar hasta cierto punto. Se escribió lo siguiente para el motor de almacenamiento MMAPv1 , que era el predeterminado hasta MongoDB 3.2. Entonces, WiredTiger se convirtió en el motor de elección, al que se puede encontrar más información al final de esta respuesta.

MMAPv1

MongoDB <2.6 (configuración no YAML)

Para nuestro servidor de desarrollo, usamos el siguiente procedimiento:

cp -p /etc/mongodb.conf /etc/mongodb.conf.orig vi /etc/mongodb.conf

Ahora, inserte

smallfiles=true

en el mongodb.conf, luego guarda. smallfiles limita el archivo de diario a 128 MB.

service mongodb stop rm -rf /var/lib/mongodb/journal/* service mongodb start

MongoDB> = 2.6 (Configuración YAML)

Si está utilizando MMAPv1 con el estilo de configuración YAML , use el mismo paso para hacer una copia de seguridad de la configuración como se indicó anteriormente, pero en el

mmapv1:

bloque de configuración, insertar

smallFiles: true

. Luego, proceda como se indica arriba, reiniciando el servidor mientras quita los diarios.

WiredTiger (MongoDB> = 3.0, predeterminado desde 3.2)

En las máquinas de desarrollo, los archivos de diario bajo WiredTiger deben ser algo más pequeños por defecto que en MMAPv1, ya que la compresión de diario está habilitada de forma predeterminada. De acuerdo con la documentación , "los archivos del diario WiredTiger para MongoDB tienen un límite de tamaño máximo de aproximadamente 100 MB". Esto "creará puntos de control (es decir, escribirá los datos de la instantánea en el disco) a intervalos de 60 segundos o 2 gigabytes de datos del diario".

Por lo tanto, si solo está ejecutando una cantidad baja de solicitudes (con pocos datos para cambiar) en su base de datos, los archivos de diario que usan WiredTiger no deben exceder un múltiplo bajo de 100 MB. Sin embargo, el tamaño de los archivos del diario no parece configurable.

Si borro el archivo de diario 3.1G, el sudo service mongodb restart fallará. Sin embargo, este archivo está ocupando demasiado espacio. ¿Como puedó resolver esté problema? ¿Como puedo quitarlo?

bash$ du -sh /var/lib/mongodb/* 4.0K _tmp 65M auction_development.0 128M auction_development.1 17M auction_development.ns 3.1G journal 4.0K mongod.lock


TL; DR: Tienes dos opciones. Use la opción de inicio --smallfiles al iniciar MongoDB para limitar el tamaño de los archivos del diario a 128MB, o apague el diario utilizando la opción --nojournal . El uso de --nojournal en la producción suele ser una mala idea, y a menudo tiene sentido utilizar diferentes problemas de escritura también en el desarrollo, por lo que no tiene un código diferente en dev y prod.

La respuesta larga : No, borrar el archivo del diario no es seguro. La idea de journalling es esto:

Entra una escritura. Ahora, para que la escritura sea persistente (y la base de datos sea duradera), la escritura debe ir al disco de alguna manera.

Desafortunadamente, escribir en el disco lleva eones en comparación con las escrituras en la RAM , por lo que la base de datos se encuentra en un dilema: no escribir en el disco es arriesgado, porque un apagado inesperado podría causar la pérdida de datos. Pero escribir en el disco para cada operación de escritura disminuirá tanto el rendimiento de la base de datos que se volverá inservible para fines prácticos.

Ahora, en lugar de escribir en los archivos de datos, y en lugar de hacerlo para cada solicitud, la base de datos simplemente se agregará a un archivo de diario donde almacena todas las operaciones que aún no se han comprometido con los archivos de datos reales. Esto es mucho más rápido, porque el archivo ya está "caliente" ya que se lee y escribe todo el tiempo, y es solo un archivo, no un montón de archivos, y por último, porque escribe todas las operaciones pendientes en un lote cada 100ms. por defecto. Eliminar este archivo en medio de algo causa estragos.


mongodb ha evolucionado desde entonces. Ahora es estable v3.4.1 .
Estoy en v3.2 aquí es cómo:
# mmapv1: así se ve así:

mmapv1: smallFiles: true

si tiene una versión diferente, busque storage Options en la página de reference/configuration-options .

no te olvides de vaciar el journal

sudo service mongodb stop sudo rm -rf /var/lib/mongodb/journal/* sudo service mongodb start