Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- ./config/backup_sql:/backup
- ./config/backup_sql:/backup
  - ./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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[mysqldump]
user=root
password=root_pass
[mysqldump] user=root password=root_pass
[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).

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[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\"
[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\"
[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

1

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

Deja un comentario