*

Cómo automatizar las copias de seguridad de la base de datos MySQL en Linux

La copia de seguridad automática de las bases de datos del servidor MySQL es muy importante para evitar la pérdida de datos. Para automatizar correctamente las copias de seguridad, debes seguir los siguientes pasos:

  1. Crea una copia de seguridad de la base de datos
  2. Comprime la copia de seguridad
  3. Cifra el archivo comprimido
  4. Envía la copia de seguridad al almacenamiento disponible mediante FTP, Dropbox, AWS, Google Drive, etc.
  5. Recibe notificaciones por correo electrónico sobre los resultados de la copia de seguridad
  6. Crear un horario de respaldo
  7. Eliminar copias de seguridad antiguas

Este artículo considerará las siguientes formas de llevar a cabo estos pasos:

Archivo bash

En la mayoría de los casos, un script bash es una buena solución. Sin embargo, no todas las ubicaciones de almacenamiento permiten cargar archivos mediante comandos de shell. Sin embargo, si todo lo que deseas hacer es guardar las copias de seguridad en un directorio, puedes hacerlo con un simple script.

Para configurar esta solución, necesitamos instalar postfix mailutils . En Ubuntu podemos hacer esto de la siguiente manera

sudo apt-get install automysqlbackup

La siguiente es la implementación más simple de un script bash para realizar copias de seguridad periódicas. Al comienzo del script, especificamos el directorio de almacenamiento de la copia de seguridad, la dirección de correo electrónico de notificación y el período de almacenamiento de la copia de seguridad.

# Backup storage directory 
backupfolder=/var/backups
# Notification email address 
recipient_email=<username@mail.com>
# MySQL user
user=<user_name>
# MySQL password
password=<password>
# Number of days to store the backup 
keep_day=30 
sqlfile=$backupfolder/all-database-$(date +%d-%m-%Y_%H-%M-%S).sql
zipfile=$backupfolder/all-database-$(date +%d-%m-%Y_%H-%M-%S).zip 
# Create a backup 
sudo mysqldump -u $user -p$password --all-databases > $sqlfile 
if [ $? == 0 ]; then
  echo 'Sql dump created' 
else
  echo 'mysqldump return non-zero code' | mailx -s 'No backup was created!' $recipient_email  
  exit 
fi 
# Compress backup 
zip $zipfile $sqlfile 
if [ $? == 0 ]; then
  echo 'The backup was successfully compressed' 
else
  echo 'Error compressing backup' | mailx -s 'Backup was not created!' $recipient_email 
  exit 
fi 
rm $sqlfile 
echo $zipfile | mailx -s 'Backup was successfully created' $recipient_email 
# Delete old backups 
find $backupfolder -mtime +$keep_day -delete

Cron permite programar este script para que se ejecute con regularidad. Para facilitar esto, hay que hacer lo siguiente:

sudo crontab -e

Luego, agrega la siguiente línea del script al final del fichero

30 22 * * * /home/user/script/mysql_backup.sh

Qué hace… el script se ejecutará todos los días a las 10:30 p.m.

Resumen

Crear un script bash es una solución buena y simple si conoces bash y cómo mantenerlo. Sin embargo, esta solución también conlleva ciertas desventajas. Descubrirás que es difícil configurar el almacenamiento de las copias de seguridad en Google Drive o DropBox. El almacenamiento en la nube rara vez es compatible con la interfaz CLI. Además, puede ser una tarea abrumadora implementar la eliminación automática de copias de seguridad antiguas.

AutoMySQLbackup

AutoMySQLBackup es una utilidad de línea de comandos que se distribuye bajo la licencia GNU. Esta
utilidad le permite automatizar el proceso de copia de seguridad de la base de datos MySQL y también le permite realizar copias de seguridad incrementales.

Instalación

Si tu distribución de Linux es Debian, entonces AutoMySQLBackup está disponible en el repositorio
y puedes instalarlo simplemente ejecutando el siguiente comando:

sudo apt-get install automysqlbackup

Si su distribución de Linux está basada en RPM, el proceso de configuración será un poco más complicado.

Descargue la última versión de AutoMySQLBackupwget

https://github.com/sixhop/AutoMySQLBackup/archive/master.zip

Crea un directorio y descomprime el archivo descargado:


mkdir /opt/automysqlbackup
mv AutoMySQLBackup-master.zip 
cd /opt/automysqlbackup
tar -zxvf AutoMySQLBackup-master.zip

Luego instala

AutoMySQLBackup./install.sh

Configuración de AutoMySQLBackup

Para configurar AutoMySQLBackup, debes editar el archivo automysqlbackup.conf:

sudo nano /etc/automysqlbackup/automysqlbackup.conf

AutoMySQLBackup contiene muchas configuraciones y puede encontrar la lista completa en la documentación oficial.

Ten en cuenta lo siguiente:

Ruta al archivo de configuración

CONFIG_configfile="/etc/automysqlbackup/automysqlbackup.conf"

Ruta al directorio de almacenamiento de la copia de seguridad

CONFIG_backup_dir='/var/backup/db'

Información para conectarse a MySQL

CONFIG_mysql_dump_username='root' 
CONFIG_mysql_dump_password='my_password' 
CONFIG_mysql_dump_host='localhost'

Lista de bases de datos que necesita o no necesita respaldar

CONFIG_db_names=('my_db') 
CONFIG_db_exclude=('information_schema')

Dirección de notificación por correo electrónico

CONFIG_mail_address='mail@google.com'

Opciones de programación

CONFIG_rotation_daily=6 
CONFIG_rotation_weekly=35 
CONFIG_rotation_monthly=150

Ejecutando el script bash después de la copia de seguridad

POSTBACKUP="/etc/mysql-backup-post"

Si planea almacenar copias de seguridad durante un número limitado de días, puede eliminar las copias de seguridad configurando el script POSTBACKUP de la siguiente manera:

# Borra los backups con más de 30 días
find /var/backup/db -mtime +30 -delete

De forma predeterminada, AutoMySQLBackup comprimirá los archivos usando «gzip».  Puede cambiar esto editando el parámetro CONFIG_mysql_dump_compression. Si desea agregar cifrado, utilice los parámetros CONFIG_encrypt y CONFIG_encrypt_password.

Corriendo

Para ejecutar AutoMySqlBackup, ejecute el siguiente comando:

automysqlbackup /etc/automysqlbackup/automysqlbackup.conf

Resumen

Esta solución puede ser una buena alternativa si no eres un usuario avanzado de bash y deseas una solución simple para realizar copias de seguridad de bases de datos MySQL en una carpeta. Una característica particularmente notable es la capacidad de crear copias de seguridad incrementales. Las desventajas de esta solución incluyen la falta de soporte para ubicaciones de almacenamiento en la nube y FTP integrados. Incluso si solo desea cargar a FTP, debe escribir un script de bash por separado.

SqlBak

SqlBak es un servicio de respaldo en la nube. Este es un servicio que le brinda una amplia gama de opciones para realizar una copia de seguridad automática de su base de datos MySQL. El proceso de creación de una copia de seguridad en SqlBak puede incluir no solo crear, comprimir, cifrar y enviar datos a ubicaciones de almacenamiento en la nube, sino también enviar notificaciones y ejecutar una restauración en otro servidor.

En Linux, este servicio es gratuito si conecta menos de 5 servidores.

Deja un comentario