0
1
1
0
1
1
0
1
0
1
1
1
1
0
1
0
0
0
Logo de Maxi Zamorano

Respaldo automático de Bases de Datos MySQL/MariaDB con Bash

  Linux
22:45 hrs   179
Respaldo automático de Bases de Datos MySQL/MariaDB con Bash

En esta oportunidad, te mostraré cómo automatizar la exportación de bases de datos MySQL/MariaDB en Linux usando script en Bash. Esto es algo esencial para realizar respaldos regulares y garantizar que tus datos estén seguros y accesibles en caso de fallos o migraciones.

Tabla de contenidos

¿Por qué automatizar las Exportaciones de Bases de Datos?

Automatizar la exportación de tus bases de datos tiene muchas ventajas:

  • Respaldo regular: Mantén copias actualizadas sin depender de procesos manuales.
  • Seguridad: Protege tus datos contra errores o fallos del sistema.
  • Eficiencia: Ahorra tiempo al eliminar tareas repetitivas.
  • Integración: Facilita migraciones o análisis en otros entornos.

En este tutorial, utilizaremos herramientas comunes de Linux que nos ayudarán a realizar la automatización: mysqldump, bash y cron.

Requisitos Previos

Antes de empezar, asegúrate de tener lo siguiente:

  • Un servidor Linux con MySQL o MariaDB instalado.
  • Acceso como usuario con privilegios suficientes para realizar exportaciones.
  • Conocimientos básicos de comandos de la terminal y scripts en Bash.

Crear automatización para exportar la base de datos

Crear usuario para realizar respaldo

Aunque esto no es obligatorio, es una muy buena práctica crear y usar un usuario específico para tareas de respaldo. Ejecuta mysql -u root -p en la terminal y crea un usuario en MySQL/MariaDB con permisos limitados, suficiente para poder crear los respaldos de la base de datos.

Nota: recuerda reemplazar usuario_backup por el nombre de usuario que quieras crear y password_usuario con la contraseña que elijas, recuerda usar una contraseña segura:

  
CREATE USER 'usuario_backup'@'localhost' IDENTIFIED BY 'password_usuario';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO 'usuario_backup'@'localhost';
FLUSH PRIVILEGES;
  

Escribir script en bash

Crea un archivo backup_mysql.sh (o el nombre que tu quieras) y pega el siguiente script que exporta una base de datos y la guarda con la fecha correspondiente.

Reemplaza los valores de DB_USER, DB_PASSWORD, DB_NAMEBACkUP_DIR por tu nombre de usuario, contraseña, nombre de la base de datos para respaldar y la ruta donde se guardará:

  
#!/bin/bash

# Configuración
DB_USER="usuario_backup"
DB_PASSWORD="password_usuario"
DB_NAME="nombre_base_de_datos"
BACKUP_DIR="backup_sql"
DATE=$(date +%d-%m-%Y_%H-%M-%S)
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql"

# Crear directorio de respaldo si no existe
mkdir -p $BACKUP_DIR

# Exportar la base de datos
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE

# Verificar si la exportación fue exitosa
if [ $? -eq 0 ]; then
  echo "Respaldo exitoso: $BACKUP_FILE"
else
  echo "Error al realizar el respaldo" >&2
fi
  

Asignar permisos de ejecución al script

Con chmod  asignale permisos de ejecución al script:

  
chmod +x /ruta/del/script/backup_mysql.sh
  

Probar y ejecutar el script

Ejecuta el script para ver que funcione correctamente y revisa la ruta del respaldo para confirmar que el respaldo se creó correctamente:

  
bash /ruta/del/script/backup_mysql.sh
  

Automatizar respaldo con Cron

Usa cron para ejecutar el script automáticamente. Por ejemplo, si quieres ejecutar el respaldo todos los días a las 2 de la madrugada configura el cron de la siguiente forma:

  
crontab -e
  
  
0 2 * * * /ruta/del/script/backup_mysql.sh
  

Despues de realizar los pasos anteriores estarás exportando diariamente tu base de datos de una forma completamente automatizada.

Consejos de Seguridad

Te menciono algunas recomendaciones que podrías considerar para mejorar la seguridad de tus respaldos:

  • Protege las credenciales: Usa un archivo de configuración .my.cnf con permisos restringidos para evitar exponer tu contraseña en el script si es que este es accesible por otros usuarios.
  • Cifra los respaldos: Considera usar gpg para cifrar los respaldos, sobre todo si son datos sensible y críticos.
  • Respaldo externo: En lugar de crear una copia local, te recomiendo usar un almacenamiento externo como Amazon S3.

Conclusión

Automatizar la exportación de bases de datos MySQL/MariaDB con un script en Bash es una forma sencilla y efectiva de garantizar la seguridad y disponibilidad de tus datos. Con esto ya tienes las herramientas necesarias para implementar este proceso en tu servidor y automatizar respaldos.

COMENTARIOS

Mis Perfiles en:

 Maximiliano Zamorano
Ingeniero en Conectividad y Redes
 [email protected]