Cargando



Guía de administración de MongoDB

En este tutorial veremos una guía de administración de MongoDB, con ello se pretende dar el conocimiento primordial para poder sobrevivir y así mantener nuestras aplicaciones siempre funcionales.


feb 24 2015 05:03
Profesional
feb 24 2015 10:18
MongoDB es un servicio como cualquier otro que podamos tener en nuestro servidor y como tal necesita que tengamos un conocimiento básico de cómo se comporta, que hacer si necesitamos detenerlo, que buscar si hay que alterar su configuración, e inclusive como hacer respaldos exitosamente.

Aun cuando muchos se concentran en entender cómo hacer aplicaciones, como sacar el máximo provecho de rendimiento de la combinación Lenguaje de Programación – Motor de Bases de Datos. Muy pocos se toman el tiempo en verdaderamente entender cómo administrar el servicio. Normalmente le dejamos la carga completa al SysAdmin y aunque este tenga la obligación de saber cómo manejar el servicio, en estructuras más pequeñas quizás debamos echarle una mano.

Requisitos
Para completar este tutorial necesitamos tener instalado una instancia de MongoDB en nuestro equipo en el que vayamos a realizar los ejercicios, además necesitamos tener permisos suficientes para ingresar a la consola y poder ejecutar comandos en la misma, por ultimo necesitaremos permisos para escribir en disco en el caso de la elaboración de respaldos.


La consola de MongoDB


La consola de MongoDB es la primera herramienta que tenemos a nuestra disposición para poder hacer interacción con el servicio. Está basada en JavaScript por lo que podemos incorporar muchos comandos que funcionan en dicho lenguaje de programación.

Algo que no es muy conocido es que podemos crear programas JavaScript y almacenarlos en archivos y luego ejecutarlos directamente desde la consola de MongoDB, esto es algo que nos puede ayudar a ejecutar una gran cantidad de comandos que tal vez sean repetitivos y no deseamos escribirlos una y otra vez cada vez que los necesitemos.

Para correr un archivo simplemente al momento de iniciar la consola añadimos el nombre del archivo, con ello este se ejecutará y se cerrará luego de finalizada la ejecución nuestra consola. Veamos un pequeño ejemplo:


guia-admin-mongodb.jpg



Aquí vemos como hemos pasado un archivo a la consola de MongoDB y está lo ha ejecutado sin problemas, por supuesto nuestro contenido no era nada relevante, pero simplemente era código JavaScript y queda demostrado como se cumple el comportamiento señalado.

Hacer un respaldo de todas nuestras Bases de Datos


Esta primera herramienta con la que vamos a trabajar nos ayuda a gestionar la creación de los respaldos a nuestras Bases de Datos, con ello podemos cumplir con nuestra agenda de asegurar la data que ya hemos recolectado a través de las diversas aplicaciones que utilizan a nuestro servicio MongoDB.

Para cumplir este objetivo tenemos el comando mongodump el cual cumple la función indicada, simplemente debemos crear un directorio donde va a residir nuestro respaldo y ahí ejecutamos dicho comando.

Comportamiento en Windows
En ambientes Windows como este en el que estamos realizando el tutorial debemos indicar la ruta donde se encuentra la utilidad mongodump, generalmente es la misma desde donde accedemos a la consola. Pero en otros ambientes como Linux, el comando reside en todo el sistema por lo que especificar la ruta no es necesario.

Veamos cómo podemos desde la consola realizar un respaldo en la siguiente imagen:

guia-admin-mongodb-2.jpg


Notamos como una vez ejecutada la utilidad de respaldos esta recorre las Bases de Datos y sus respectivas colecciones, al final terminaremos con una carpeta llamada dump y dentro, cada una de las colecciones existentes en el directorio desde donde se ejecutó la misma como podemos ver en la imagen a continuación:

guia-admin-mongodb-3.jpg



Utilizar el respaldo


Ya que tenemos el respaldo si queremos utilizarlo para restaurar nuestras Bases de Datos únicamente debemos repetir el proceso anterior pero en vez de utilizar el comando mongodump, vamos a utilizar mongorestore con el argumento --drop de esta forma podremos recuperar los datos que teníamos hasta el momento en que se generó el respaldo. Veamos como luce esta operación en la consola:

guia-admin-mongodb-4.jpg


Si no hubiésemos utilizado el argumento --drop al final de mongorestore lo que hubiese sucedido es que la información del respaldo se hubiese añadido al final de las colecciones existentes generando así inconsistencias de datos si nuestra Base de Datos existiera y solo queríamos restaurar a un estado anterior, con el argumento lo que se hace es forzar a que MongoDB elimine cada colección antes de restaurarla desde el respaldo.

Restaurar solo una colección en particular


Hasta ahora los ejemplos han sido para respaldo masivo de datos, pero que pasa si compartimos el servicio con más aplicaciones y solo queremos respaldar una colección en particular, pues es posible, simplemente debemos utilizar unos argumentos en particular con los cuales obtendremos solo los datos requeridos.

El argumento de elección para la Base de Datos es -d y luego para la colección -c veamos cómo podemos hacer esto desde una ejecución en nuestra consola de pruebas:

guia-admin-mongodb-5.jpg


Como pudimos apreciar la consola nos muestra un mensaje mucho más corto y si revisamos nuestra carpeta de respaldo resultante veremos que tenemos menos información que lo que anteriormente se generó.

guia-admin-mongodb-6.jpg


Aquí cabe destacar algo importante, el comando mongodump no es destructivo, es decir, este no va a borrar los datos que estén en el directorio destino, lo único que hará es sobrescribir si encuentra un archivo del mismo nombre que el que está escribiendo. En esta última imagen vemos menos archivos que el ejemplo anterior porque hemos borrado el respaldo obtenido en el ejemplo mencionado.

Restaurar una única Base de datos
Para restaurar una sola Base de Datos y colección podemos utilizar nuevamente mongorestore y al igual que con mongodump, vamos a pasar los argumentos -d y -c para establecer ambas, de esta manera podemos elegir exactamente lo que estamos restaurando y así no tener que sufrir perdida de datos que no tenemos que restaurar.


Obtener ayuda


Lo que hemos visto hasta ahora es solo un pequeño abre bocas de estos comandos de respaldo y restauración, es por ello que estos comandos nos ofrecen una utilidad con la cual podemos saber que otros argumentos podemos utilizar y también tener una pequeña explicación de que hacen dichos argumentos, para ello simplemente debemos añadir --help y con ello tendremos el listado de argumentos disponibles para el comando:

guia-admin-mongodb-7.jpg


Esto lo podemos hacer por cada una de las herramientas o comandos que tenemos disponibles en MongoDB.

Finalizar el servicio


Si queremos terminar el proceso del servicio de MongoDB de forma segura para que no se pierdan datos y no hacer una salida abrupta en el mismo, podemos utilizar un comando de administrador el cual es {“shutdown”:1} y cómo podemos ver es un JSON, este debe correrse en la consola y además dentro de la Base de Datos admin. Para ello utilizaremos la función interna db.shutdownServer() y obtendremos la finalización del servicio como vemos:


Obviamente si terminamos el servicio la consola de MongoDB nos va a dar error al tratar de conectarse al servidor, es por ello que vemos en la ventana de la derecha como obtenemos algunos errores.

Administración gráfica


Si lo que necesitamos es tener un panorama un poco más gráfico para poder estar al tanto de la información de nuestro servicio de MongoDB, podemos iniciar el mismo con soporte para REST, para ello al momento de iniciar el servicio con mongod le pasamos como argumento --rest y con ello se levantará una pequeña interfaz HTTP en el puerto por defecto 28017.

Normalmente se inicia 1000 puertos más adelante del puerto del servicio por lo que si hemos configurado un puerto diferente ya sabemos que tenemos que hacer para poder acceder a la consola.


Si accedemos a cada uno de los links veremos que obtendremos archivos JSON con la información ofrecida, como puede ser el listado de Bases de Datos, o el estado del servidor por ejemplo.

Desventajas
Esta herramienta no es la más óptima, pero ofrece un poco de ayuda en caso que la consola no sea lo nuestro o si tal vez estamos creando nuestra propia herramienta que se necesite conectar vía REST con nuestro servicio.

Con esto finalizamos este tutorial, ya hemos adquirido un conocimiento básico pero muy valioso, ya que podemos crear nuestros propios respaldos, detener el servicio en caso de algún problema, y si ya queremos retornar a un estado anterior podemos restaurar un respaldo en nuestra Base de Datos. Si como desarrolladores tomamos en cuenta los aspectos administrativos de nuestros servicios, lo más seguro es que hagamos mejores aplicaciones porque ya sabremos cómo funcionan, además que al depender menos de un Sysadmin por lo menos para elementos básicos nos puede ayudar a obtener mejores posiciones de trabajo al desarrollar de forma más veloz nuestras aplicaciones y resolver nuestros propios problemas.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X