Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

A continuación, se desarrollarán los pasos a seguir para la compactación, restauración e indexación de la base de datos de mongo y así poder liberar espacio en el filesystem /data. Este proceso es realizado en NMIS9.

NOTANota: en algunos casos, la información se encuentra en /var/lib/mongo, ; si se desea realizar el cambio del path modificar , debe modificarse /etc/mongod.conf.

ADVERTENCIA: Advertencia: si se modifica el path del archivo, este proceso eliminará los datos históricos de la interface interfaz gráfica de NMIS y sus módulos.

...

Depuración de la base de datos de mongo

El procedimiento referido en esta página está referico a cuando la este punto es recomendado para cuando la partición /data tiene demasiado espacio utilizado. Esto está provocando que NMIS y sus módulos funcionen de manera incorrecta.

Image Removed

En el ejemplo actual, se describe el procedimiento para mantener el histórico del último año, por lo cual el equipo de Opmantek LATAM recomienda realizar la compactación de la base de datos a partir de la fecha que se indica en los siguientes pasos.NOTA: 

Proceso

...

Nota inicial: no es necesaria la detención de los demonios del servidor, este proceso puede aplicarse directamente en el servidor deseado.

1. Para este ejemplo, se purgan las colecciones de mongo "events", "actionlog" y "rawlogs", removiendo todo lo anterior a la fecha del miércoles 1 de enero de 2020 (1579651200 en formato Epoch). Esta fecha debe acordarse con cada cliente y se recomienda utilizar la página web https://www.epochconverter.com/ para poder realizar la conversión.

Se ejecutan los siguientes comandos, uno por a uno:

mongo

> use opevents

> -u opUserRW -p op42flow42 nmis --eval ' db.getCollection("'events"').remove({time: {$lt: 1579651200}})'

> mongo -u opUserRW -p op42flow42 nmis --eval ' db.getCollection("'actionlog"').remove({time: {$lt: 1579651200}})'

> mongo -u opUserRW -p op42flow42 nmis --eval ' db.getCollection("'rawlogs"').remove({time: {$lt: 1579651200}})'Image Removed


2. A continuación, se compactan cada una de las colecciones purgadas para liberar el espacio en disco, mediante la ejecución de los siguientes comandos, uno por a uno:

mongo -u opUserRW -p op42flow42 nmis

> use opevents

> db.runCommand({compact: 'events'})

> db.runCommand({compact: 'rawlogs'})

> db.runCommand({compact: 'actionlog'})Image Removed


3. Al final, se logra la reducción de /data a 70%:

Procedimiento de contigencia para la restauración de la base de datos de mongo

Restauración de la bd: MongoDB Installation


Base de datos correcta: copia y restauración

Importante: Este proceso aplica cuando la base de datos funciona de manera correcta y solo se desea realizar una copia para restaurarla posteriormente, ya sea en el mismo servidor o en otro.

El procedimiento referido en este punto es recomendado cuando se desea realizar una copia de la base de datos y una restauración.

Proceso

Ejecutar el siguiente comando para generar un mongodump, lo cual creará una carpeta que contendrá las bases de datos del servidor:

Code Block
mongodump -u=opUserRW -p=op42flow42 --out=/data/mongodump


Borrar el contenido de la carpeta de mongo:

Code Block
cd /data/mongo o cd /var/lib/mongo #según aplique
rm -rf *


Ejecutar el setup de mongo para que se genere nuevamente la base de datos (este script debe activar el demonio mongod):

Code Block
/usr/local/omk/bin/setup_mongodb.pl


Ejecutar el siguiente comando para restaurar la base de datos, lo cual va a restaurar las bases de datos que se generaron con en el primer comando:

Code Block
mongorestore -u=opUserRW -p=op42flow42 /data/mongodump

Base de datos corrupta: procedimiento para restauración

Importante: Cuando la base de datos se corrompe no es posible recuperar los datos y únicamente es posible reiniciarla desde cero.

Advertencia: si se realiza este procedimiento, se creará una nueva base de datos y todo el histórico del servidor se perderá.

El procedimiento referido en este punto es recomendado cuando mongod no pueda iniciarse de manera correcta, lo cual puede deberse a una corrupción de la base de datos. Esto está provocando que NMIS y sus módulos funcionen de manera incorrecta.

Proceso

Detener nmis9d y mongod.

Code Block
[root@noc ~]# service nmis9d stop
[root@noc ~]# service mongod stop


Situarse en la carpeta de mongo y eliminar todo su contenido:

Code Block
cd /data/mongo o cd /var/lib/mongo #según aplique
rm -rf *


Eliminar los archivos .lock y .sock de mongo (si es que existen):

Code Block
rm /data/mongodb/mongod.lock o /var/lib/mongo/mongod.lock #según aplique
rm /tmp/mongodb-27017.sock


Ejecutar el setup de mongo para que se genere nuevamente la base de datos (este script debe activar el demonio mongod):

Code Block
/usr/local/omk/bin/setup_mongodb.pl


Iniciar nmis9d

Code Block
[root@noc ~]# service nmis9d start


Al finalizar, revisar la carpeta /data/mongo para verificar que se hayan generado correctamente los archivos .wt de la base de datos.

Image Added

Comandos útiles para la indexación de histórico de mongodb

El procedimiento referido en este punto es recomendado para cuando mongod utiliza demasiados recursos del servidor, como puede verse en los siguientes ejemplos:

Image Added

Image Added

Proceso

Ejecutar los siguientes comandos, uno a uno:

Code Block
/usr/local/omk/bin/opcharts-cli.pl act=setup-db
/usr/local/omk/bin/opevents-cli.pl act=setup-db
/usr/local/omk/bin/opconfig-cli.pl act=setup-db
/usr/local/nmis9/bin/nmis-cli act=ensure_indexes

Los cuales ajustarán los índices de la base de datos para optimizar el desempeño de la misma.


Después de un tiempo, el servidor deberá estabilizarse y mongod no deberá de utilizar más allá del 80-100%.Comandos útiles para