Hacer una copia de seguridad de MySQL o MariaDB con Ofelia (cron) y Docker

Tiempo de lectura: 2 minutos

Hola, hoy vamos a aprender cómo podemos crear una copia de seguridad de MySQL o MariaDB usando Ofelia para ejecutar tareas cron con Docker o Docker compose.

Lo primero que vamos a hacer es tener listo un entorno de Docker Compose con MySQL instalado y tablas cargadas. Podéis ver alguno de los tutoriales que tenemos publicados para generar entornos en Docker Compose: https://devcodelight.com/category/docker/

Ahora vamos a crear los ficheros de configuración dentro de nuestro contenedor MySQL:

miservicio_mysql:
    image: biarms/mysql:5.7
    env_file:
      - ./Dockerfile/mysql.env
    container_name: mysql_container
    command: --max_allowed_packet=67108864
    mem_limit: 2g
    restart: always
    environment:
      MYSQL_DATABASE: "bddd" 
      MYSQL_USER: "user_db" 
      MYSQL_PASSWORD: "user_db_root_pass" 
      MYSQL_ROOT_PASSWORD: "root_pass"
    volumes:
      - ./config/mysql:/var/lib/mysql
      - ./config/backup_sql:/backup
    expose:
      - 3306
    ports:
      - 3306:3306
    networks:
      - docker-network

Hemos creado el volumen:

  - ./config/backup_sql:/backup

Dónde se va a guardar la copia de seguridad creada y además el archivo de configuración con las contraseñas de MySQL.

Ahora creamos dentro de config/backup un archivo llamado my.cf

[mysqldump]
user=root
password=root_pass

En este archivo configuramos el usuario de la base de datos y su contraseña.

Ahora vamos a crear el archivo config.ini de Ofelia (recuerda que aquí te enseño cómo puedes utilizar Ofelia en tu entorno).

[job-exec "job-executed-on-running-container"]
schedule =  @every 5m
container = mysql_container
command =  sh -c \"mysqldump --defaults-file=/backup/my.cf --routines --all-databases | gzip > /backup/copia-$(date +%y%m%d%H%M).sql.gz\"

Este comando se ejecutará cada 5 minutos y generará una copia de la base de datos.

Recuerda cambiar la frecuencia, de 5m a la deseada:

schedule = @every 5m

Finalmente, el comando generará una copia de todas las bases de datos, recuerda que puedes tunear el comando a tu gusto, por ejemplo para seleccionar solo la base de datos que necesitas para tu backup

3 comentarios en «Hacer una copia de seguridad de MySQL o MariaDB con Ofelia (cron) y Docker»

Deja un comentario