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
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
3 comentarios en «Hacer una copia de seguridad de MySQL o MariaDB con Ofelia (cron) y Docker»