Skip to main content

MariaDB

Fuente: MariaDB y phpMyAdmin

Uno de los elementos importantes de un entorno son las bases de datos (BBDD). Es donde se almacenan los datos necesarios para que las aplicaciones puedan guardar y gestionar persistentemente en el disco.

Habitualmente, cuando creo un Docker de motor de BBDD, añado también un gestor gráfico o tipo web para agilizar la gestión de la misma. Así que en este caso he añadido phpMyAdmin.

También prefiero centralizarlo todo en un contenedor y que el resto se conecte a este, para así no duplicar las instalaciones de motores de BBDD y ser más conservador en los recursos de memoria, centralizar copias de seguridad...

---
services:
  mariadb:
    container_name: mariadb
    image: mariadb
    restart: always
    networks:
      - mariadbnet
    volumes:
     - ./mariadb:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${DATABASE_PWD}
              
  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin
    restart: always
    depends_on:
      - mariadb
    networks:
      - mariadbnet
    ports:
      - "80:80"
    environment:
      - PMA_HOST=mariadb

networks:
  mariadbnet:
    external: true

Variables

  • DATABASE_PWD: Contraseña del usuario root de la BD.

Notas

  • image: Al no indicar nada, siempre escogerá la etiqueta latest.
  • networks: Todos los contenedores que creemos a partir de ahora que necesiten conectarse a MariaDB, se han de añadir a la red mariadbnet.

Copias de seguridad

Hacer copias de seguridad es una obligación si no quieres perder tus datos. Con este script puedes hacer copias separadas por BD.

#!/bin/bash

# Eliminamos los archivos más antiguos de 20 días
find -L ./mariadb_bck -mtime +20 -type f -delete

# Realizamos copia de seguridad individual de cada BD
docker exec mariadb mariadb -u root --password="ContraseñaMolonaDeroot" --batch --skip-column-names -e 'show databases;' | grep -E -v 'information_schema|performance_schema|mysql' | while read db; do docker exec mariadb mariadb-dump -u root --password="ContraseñaMolonaDeroot" --comments --dump-date --extended-insert --routines --system=user "$db" | gzip -c --best > "./mariadb_bck/$(date +%Y%m%d%H%M%S).$db.sql.gz"; done

Para ejecutarlo hay que recordar hacerlo ejecutable (chmod u+x backup.sh) y muy recomendable añadirlo a cron para que se haga periódicamente.