MongoDB on Linux: Complete guide to install, configure, and optimize

Introducción

MongoDB se ha convertido en una de las bases de datos NoSQL más populares gracias a su flexibilidad, escalabilidad y rendimiento. Cuando se ejecuta sobre una distribución Linux, aprovecha al máximo la estabilidad, la seguridad y las herramientas de administración del sistema operativo. En este artículo encontrarás un recorrido paso a paso desde la instalación hasta la optimización avanzada, pensado tanto para administradores de sistemas como para desarrolladores que desean sacar el máximo provecho de MongoDB en un entorno Linux.

Por qué elegir Linux para MongoDB

Linux ofrece varios beneficios que complementan las características de MongoDB:

  • Estabilidad y tiempo de actividad prolongado, ideal para cargas de trabajo continuas.
  • Gestor de paquetes potente (apt, yum, dnf) que facilita la instalación y actualización.
  • Control granular sobre recursos mediante cgroups y namespaces, útil para aislar la base de datos.
  • Amplia comunidad y documentación que resuelve rápidamente problemas de compatibilidad.

Además, la mayoría de las guías oficiales de MongoDB asumen un entorno Linux, por lo que seguir sus recomendaciones es más directo.

Requisitos previos

Antes de comenzar, verifica que tu sistema cumpla con los siguientes puntos:

  • Una distribución Linux reciente (Ubuntu 22.04 LTS, Debian 12, RHEL 9 o CentOS Stream 9).
  • Acceso de usuario con privilegios sudo.
  • Conexión a internet para descargar paquetes.
  • Al menos 2 GB de RAM y 10 GB de espacio libre en disco para pruebas; en producción se recomienda más según la carga.

Instalación de MongoDB

Existen tres métodos principales: mediante repositorios oficiales, usando el gestor de paquetes de la distribución o instalando desde un tarball binario. Cada uno tiene sus ventajas.

1. Repositorios oficiales (recomendado)

Los repositorios de MongoDB proveen las versiones más recientes y permiten actualizaciones simples.

# Importar la clave pública
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

# Añadir el repositorio
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

# Actualizar e instalar
sudo apt-get update
sudo apt-get install -y mongodb-org

Para distribuciones basadas en RPM (RHEL, CentOS, Fedora) el proceso es similar usando yum o dnf y el repositorio correspondiente.

2. Instalación desde el gestor de la distribución

Algunas distribuciones incluyen paquetes más antiguos pero totalmente funcionales:

sudo apt-get install -y mongodb   # Ubuntu/Debian (versión comunitaria)

Esta vía es útil para entornos de pruebas donde no se necesita la última versión.

3. Tarball binario

Descarga el archivo tarball desde la página oficial, descomprópelo y agrega el binario al PATH. Es útil cuando se necesita una versión específica o se quiere evitar cambios en el sistema de paquetes.

Configuración básica

El archivo de configuración principal se encuentra en /etc/mongod.conf. Aquí se definen aspectos críticos como el puerto, el directorio de datos y el motor de almacenamiento.

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
net:
  port: 27017
  bindIp: 127.0.0.1   # Cambiar a 0.0.0.0 solo si se necesita acceso remoto y se configura un firewall
security:
  authorization: enabled

Después de editar, reinicia el servicio:

sudo systemctl restart mongod
sudo systemctl enable mongod

Ajustes de rendimiento

Para obtener el mejor rendimiento, considera los siguientes parámetros:

  • Motor de almacenamiento: WiredTiger es el predeterminado y ofrece compresión y concurrencia. Ajusta wiredTigerCacheSizeGB según la RAM disponible (ej. 0.5 * RAM total).
  • Índices: Crea índices en las consultas frecuentes usando db.collection.createIndex({ campo: 1 }). Monitorea su uso con db.collection.getIndexes().
  • Sharding: Si el conjunto de datos supera la capacidad de un solo nodo, implementa un cluster sharded para distribuir la carga.
  • Réplica: Configura un conjunto de réplicas (mínimo 3 nodos) para alta disponibilidad y lecturas escalables.

Después de cambiar cualquier parámetro, verifica el impacto con mongostat y mongotop.

Copias de seguridad y restauración

Una estrategia de backup sólida protege contra pérdida de datos. MongoDB ofrece varias opciones:

  • mongodump / mongorestore: Herramientas lógicas que exportan e importan datos en formato BSON. Ideal para backups esporádicos o migraciones.
  • Snapshots del sistema de archivos: Si usan LVM o un sistema de archivos que soporte snapshots (ej. XFS, Btrfs), tomar un snapshot del directorio /var/lib/mongodb brinda un backup consistente sin detener el servicio (con journaling habilitado).
  • MongoDB Cloud Manager / Ops Manager: Soluciones comerciales que automatizan backups, point-in-time recovery y monitoreo.

Ejemplo de backup lógico diario:

mongodump --out /backups/mongodump_$(date +%F)

Y restauración:

mongorestore /backups/mongodump_$(date +%F)/nombre_base

Monitoreo y alertas

Mantener la visibilidad del estado de la base de datos es esencial para detectar cuellos de botella antes de que afecten a los usuarios.

  • mongostat: muestra estadísticas en tiempo real (operaciones por segundo, uso de memoria, bloqueos).
  • mongotop: rastrea el tiempo de lectura y escritura por colección.
  • Prometheus + exporter: el MongoDB Exporter expone métricas que Prometheus puede scrapear; combina con Grafana para dashboards personalizados.
  • Alertas: define umbrales para replicas lag, porcentaje de uso de caché, conexiones activas y tiempo de respuesta de consultas lentas.

Solución de problemas comunes

Algunos inconvenientes frecuentes y su resolución:

  • Servicio no arranca: revisa /var/log/mongodb/mongod.log para mensajes de error. Falta de permisos en dbPath o puerto ya en uso son causas habituales.
  • Consultas lentas: usa el profiler de MongoDB (db.setProfilingLevel(1)) y analiza el system.profile collection. Añade índices o reescribe la consulta.
  • Replica lag alto: verifica la red entre nodos, la carga del nodo primario y considera aumentar el tamaño del oplog.
  • Agotamiento de memoria: asegúrate de que wiredTigerCacheSizeGB no exceda el 60‑70 % de la RAM total, dejando espacio para el sistema operativo y otras aplicaciones.

Conclusión

Ejecutar MongoDB en Linux combina la robustez y flexibilidad del sistema operativo con la potencia de una base de datos NoSQL moderna. Siguiendo los pasos de instalación, ajustando la configuración según tu carga de trabajo y estableciendo rutinas de monitoreo y backup, podrás mantener un entorno de datos fiable, escalable y seguro. Recuerda revisar periódicamente la documentación oficial de MongoDB y los foros de la comunidad para estar al tanto de mejores prácticas y nuevas características.