Mi Raspberry Pi, mi laboratorio de DB's
Como tal vez no lo saben (claro que no lo saben, pero aquí va), he comenzado mi maestría en Big Data y Ciencia de Datos, lo que me ha llevado a sumergirme más profundamente en el fascinante mundo de las bases de datos. Parte por curiosidad personal, parte por los cursos en los que estoy, esta experiencia me ha motivado a experimentar con diferentes tecnologías y aprender en el proceso.
Si me conoces bien, sabes que soy un poco “piqui” con mi computadora. Me gusta mantenerla libre de imágenes innecesarias, librerías de dudosa utilidad y cualquier cosa que pueda convertirla en un caos digital. Así que, para preservar ese orden, decidí rescatar mi viejo Raspberry Pi 3 del olvido y convertirlo en mi servidor de bases de datos por defecto. Porque, ¿por qué no aprovechar lo que ya tienes?
La tecnología avanza a pasos agigantados, y eso significa que el hardware más antiguo a menudo queda obsoleto para las últimas versiones de software. Esto lo comprobé de primera mano al intentar instalar MongoDB. Resulta que las versiones posteriores a la 4 ya no son compatibles con procesadores ARM V8, como el que usa el Raspberry Pi 3. Ahí estaba yo, perdiendo tiempo peleándome con Docker, la terminal y un servidor que simplemente no funcionaba.
Escribo esto como un recordatorio personal y, tal vez, como una guía para algún otro despistado que se encuentre en la misma situación. Si te estás volviendo loco intentando descubrir por qué tu servidor no arranca, quizás este texto te ahorre algunos dolores de cabeza. A veces, el mejor aprendizaje viene de los momentos en los que nada parece salir bien.
Si estás aquí, es porque ya tienes experiencia en el tema, así que me saltaré explicaciones básicas que seguramente ya dominas. Vamos directo al grano, porque si estás leyendo esto, asumo que buscas información útil, no un repaso innecesario.
Build:
Te dejaré los archivos docker compose a continuación. En mi caso creé una carpeta para cada base de datos, mongoDb, MariaDB y PostgreSQL, dentro de cada carpeta se encuentra el archivo compose que le corresponde y el directorio donde se persisten los archivos de la base de datos.
mongoDB: docker-compose.yml
services:
mongodb:
image: mongo:4.4.18
platform: linux/arm64
container_name: mongodb
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: user
MONGO_INITDB_ROOT_PASSWORD: password
ports:
- "27017:27017"
volumes:
- ${PWD}/mongodb_data:/data/db
command: ["--bind_ip", "0.0.0.0"]
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
mongodb_data:
MariaDB: docker-compose.yml
services:
mariadb:
image: mariadb:10.11
platform: linux/arm64
container_name: mariadb
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: password
#MARIADB_DATABASE: mi_db
MARIADB_USER: user
MARIADB_PASSWORD: password
TZ: America/Mexico_City
ports:
- "3306:3306"
volumes:
- ${PWD}/mariadb_data:/var/lib/mysql
- ${PWD}/mariadb.cnf:/etc/mysql/conf.d/custom.cnf
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MARIADB_ROOT_PASSWORD}"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
mariadb_data:
PostreSQL: docker-compose.yml
services:
postgres:
image: postgres:15-alpine
platform: linux/arm64
container_name: postgres
restart: unless-stopped
environment:
POSTGRES_PASSWORD: password
POSTGRES_USER: user
#POSTGRES_DB:
ports:
- "5432:5432"
volumes:
- ${PWD}/postgres_data:/var/lib/postgresql/data
Obviedades que no podemos ignorar:
Instalar Oracle Linux en un Raspberry Pi, necesitarás un teclado y un monitor, ya que no es una instalación headless. Además, tendrás que expandir las particiones manualmente, instalar y configurar el servidor SSH, y realizar trabajo adicional.
Si prefieres ahorrarte este proceso, Ubuntu Server para Raspberry Pi es una excelente alternativa. Su versión headless permite el acceso directo por SSH, y la mayor parte de la configuración inicial ya estará lista para que comiences a trabajar sin complicaciones.
Es importante mencionar que utilizo este entorno exclusivamente para desarrollo y pruebas, no para producción. Esto es crucial, ya que en un ambiente de producción hay consideraciones mucho más estrictas que abordar, como seguridad, estabilidad, resiliencia y otros aspectos críticos. Lo que funciona bien para experimentar o probar ideas puede no ser adecuado para soportar una carga de trabajo real en un entorno empresarial.
Espero les sea de utilidad.
Árbol de directorios:
ignorar los *_data, es la info de la bases de datos auto-generada
Subscribe to my newsletter
Read articles from Rigel Carbajal directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Rigel Carbajal
Rigel Carbajal
¡Hola! Soy Rigel, ingeniero en sistemas, amante de la tecnología, los datos y un buen café. 🚀 Siempre aprendiendo y listo para el próximo reto. 🤓