linux

Respaldar base de datos de MySQL automáticamente usando cron en Ubuntu

Combinar cron y mysqldump para respaldar base de datos cada cierto tiempo

Hace algún tiempo vimos cómo respaldar una base de datos completa en MySQL usando mysqldump sin exponer nuestras credenciales.

Hoy veremos cómo respaldar la base de datos pero cada cierto tiempo. Es decir, podríamos respaldarla cada semana, cada hora, todos los domingos o en cualquier momento del tiempo gracias a cron.

Resumiendo, veremos cómo crear un respaldo de una base de datos de manera periódica y automática usando cron, Linux, mysql y un script que he programado.

Lecturas recomendadas

Antes de esto y para tener una idea general, recomiendo que veas estos artículos:

No son estrictamente necesarios para este post, pero te van a ayudar a entender mejor.

El proceso a seguir para el respaldo

Tenemos que especificar nuestro usuario y contraseña en un archivo my.cnf. Dicho archivo se ve algo así:

[mysqldump]
user=root
password=hunter2

Después de ello obtenemos la fecha para ponerla como sufijo del archivo de respaldo que se va a crear.

Usamos mysqldump, le pasamos las credenciales y la salida la guardamos en el archivo de respaldo. Una vez que ya probamos que funciona, lo añadimos a cron para que se ejecute de manera periódica y listo.

Hablar es de mal gusto, muéstrame el código

Dejo aquí el script de bash que se encarga de generar los respaldos automáticos de una base de datos en MySQL.

Únicamente tienes que cambiar las variables de acuerdo a tus necesidades, darle permisos de ejecución con chmod +x script.sh y ponerlo en el crontab; más abajo mostraré un ejemplo.

#!/bin/bash
# Respaldar base de datos de MySQL con
# mysqldump y archivo de configuración
# usando cron para hacerlo de manera periódica
# 
# https://parzibyte.me/blog/2019/02/05/instalar-configurar-mysql-linux-ubuntu/
# https://parzibyte.me/blog/2019/02/06/script-respaldar-base-de-datos-mysql-mariadb-linux-mysqldump/
# https://parzibyte.me/blog/2018/07/02/linux-script-respaldar-carpeta-bash-tar/
# 
# @author parzibyte | Visita: parzibyte.me/blog

# El nombre de tu base de datos de MySQL/MariaDB
NOMBRE_BASE_DE_DATOS="pruebas"
FECHA=`date "+%d-%m-%y_%H-%M-%S"`
# Ruta absoluta en donde está tu usuario y contraseña, mira el segundo link de arriba
RUTA_ARCHIVO_CONFIGURACION="/home/cabox/my.cnf"
# Ruta absoluta de la carpeta en donde se van a crear los respaldos
RUTA_SALIDA_RESPALDO="/home/cabox/"
# Da algo como respaldo_pruebas_06-02-2019_09-22-20.sql
NOMBRE_ARCHIVO_RESPALDO="respaldo_${NOMBRE_BASE_DE_DATOS}_${FECHA}.sql"
# Simple concatenación
RUTA_ARCHIVO_RESPALDO="$RUTA_SALIDA_RESPALDO/$NOMBRE_ARCHIVO_RESPALDO"
# Y llamamos al comando de mysqldump, guardamos la salida en el respaldo y ya está :)
mysqldump --defaults-file=$RUTA_ARCHIVO_CONFIGURACION $NOMBRE_BASE_DE_DATOS > $RUTA_ARCHIVO_RESPALDO

En la primera línea definimos el shebang para indicar el ejecutable de bash. Luego son simples comentarios que explican todavía más el código.

Las variables que tendrían que cambiarse serían la ruta de salida del respaldo y la ubicación del archivo, pues en mi caso es cabox pero en tu caso será otro dependiendo de las necesidades.

Configurar y probar script

Para ejemplificar, pondré el script en ~, es decir, en /home/tu_usuario/. Luego de ello le damos permisos, y listamos los archivos para ver que no hay respaldos.

Por cierto, recuerda que debes crear el archivo my.cnf y especificar su ubicación dentro del script (en mi caso está en ~/my.cnf).

Configurar script para respaldar base de datos

Luego ejecuamos ./respaldar_mysqldump_cron.sh y se ha creado el respaldo con la fecha y hora actuales. Con esto nos damos cuenta de que el script funciona de maravilla.

Poner script en crontab

Si se desea añadir el script al crontab ejecutamos:

crontab -e

Ahí, abajo de todo, añadimos la llamada al script. En este caso lo haré cada minuto para ejemplos de simplicidad, no recomiendo hacerlo en producción sobre todo si la base de datos es pesada.

Queda así:

Agendar ejecución de script en crontab

La línea que agregué fue:

* * * * * ~/respaldar_mysqldump_cron.sh

(Me ayudó esta herramienta)

Ahora solamente resta esperar un poco, se supone que cada minuto debería crearse un archivo de respaldo. La imagen lo comprueba:

Respaldos de BD creados cada minuto usando cron

Editamos el crontab e imprimimos la fecha del servidor. Cada cierto tiempo listamos los archivos y vemos que conforme pasa el tiempo, más respaldos o backups son creados.

Y claro, los respaldos contienen los datos de las bases de datos de MySQL.

Con eso terminamos por hoy. Aprende más sobre MySQL, Bases de datos y Linux.

 

 

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.