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.