MySQL - Creación de rutinas de copia de seguridad en Windows y Linux

Si tiene una base de datos MySQL, lo más probable es que ya haya necesitado o necesite acceder a una copia de seguridad desde su banco. La mejor manera de prevenirse es mantener una rutina diaria (o según lo necesite) copias de seguridad, y exactamente lo que aprenderemos a hacer en este artículo. Aprenderemos a crear rutinas de copia de seguridad mysql en Windows y Linux, nuestro objetivo será crear un script que cree una copia de seguridad de nuestro banco en un archivo comprimido con marcado de fecha y una rutina diaria para ejecutar, nuestro script también será capaz de eliminar archivos de más de 7 días.

¿Qué es MySQL?

No voy a entrar en una gran cantidad de datos técnicos sobre el historial de MySQL, se puede comprobar este enlace, pero brevemente MySQL es un sistema de gestión de bases de datos (DBMS), que utiliza el lenguaje SQL - Lenguaje de consulta estructurado, de Inglés Structured Query Language. Actualmente es mantenido por Oracle Corporation y distribuido bajo dos licencias: GPL y Commercial License.

Creación de copias de seguridad de MySQL diariamente en Windows

Aprenderemos a crear un script completo en Windows, para ello es necesario haber instalado previamente MySQL y tener los datos de usuario legibles en la base de datos para ser copiados y usaremos 7zip para comprimir nuestros archivos.

Primero vamos a crear el archivo que contendrá nuestras credenciales de acceso bancario: config.cnf.

# Configuración de usuario [mysqldump] user=root password=senha

Y ahora el archivo que realizará todo el proceso de copia de seguridad.

#Set-ExecutionPolicy -ExecutionPolicy Bypass $mysqlpath = “C:\Program Files\MySQL\MySQL Server 5.5\bin” # Ruta de acceso a la instalación de MySQL $backuppath = “C:\backups\” # Ruta para almacenar las copias de seguridad $7zippath = “C:\Program Files (x86)\7-Zip” # Ruta de acceso a la instalación de 7zip $config = “C:\config.cnf” # Ruta de acceso al archivo con las credenciales $database = “blog” # Nombre de nuestra base de datos $errorLog = “C:\error_dump.log” # Ruta de acceso a nuestro archivo de registro $days = 7 # Días para guardar los archivos de copia de seguridad $date = Get-Date $timestamp = ” ” + $date.day + $date.month + $date.year + ”_” + $date.hour + $date.minute $backupfile = $backuppath + $database + ”_” + $timestamp +“.sql” $backupzip = $backuppath + $database + ”_” + $timestamp +“.zip”

Inicia el proceso de copia de seguridad

CD $mysqlpath .\mysqldump.exe —defaults-extra-file=$config —log-error=$errorLog —result-file=$backupfile —databases $database /c

Inicia el proceso de compactación con 7zip

CD $7zippath .\7z.exe a -tzip $backupzip $backupfile

Elimina el archivo sin procesar

Del $backupfile

Elimina los archivos antiguos

CD $backuppath $oldbackups = gci *.zip*

for($i=0; $i -lt $oldbackups.count; $i++){ if ($oldbackups[$i].CreationTime -lt $date.AddDays(-$days)){ $oldbackups[$i] | Remove-Item -Confirm:$false } }

Programador de tareas - Creación de programación

Para crear la programación en Windows puede usar el Programador de tareas.

Programador de tareas

Creación de copias de seguridad de MySQL diariamente en Linux

Ahora aprenderemos a crear un script completo en Linux, para ello es necesario haber instalado previamente MySQL y tener los datos de usuario legibles en la base de datos para ser copiados. También usaremos bzip2 para comprimir nuestros archivos, si no desea utilizar esta funcionalidad, comente las líneas 28 y 29.

#!/bin/bash

DB_NAME=‘dbname’ # Nombre de la base de datos DB_USER=‘dbuser’ # Usuario del banco DB_PASS=‘dbpass’ # Contraseña del banco DB_PARAM=‘—add-drop-table —add-locks —extended-insert —single-transaction -quick’ # Parámetros para la copia de seguridad https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

MYSQLDUMP=/usr/bin/mysqldump # Ruta de acceso al binario de mysqldump BACKUP_DIR=/backup/mysql # Ruta de acceso para guardar las copias de seguridad DIAS=7 # Cuántos días de copias de seguridad desea mantener

DATE=`date +%Y-%m-%d` BACKUP_NAME=mysql-$DATE.sql BACKUP_TAR=mysql-$DATE.tar BACKUP_BZ2=mysql-$DATE.tar.bz2

echo “Inicio del proceso de copia de seguridad…”

#Generando archivo sql echo “Generando copia de seguridad de la base de datos $DB_NAME en $BACKUP_DIR/$BACKUP_NAME” $MYSQLDUMP $DB_NAME $DB_PARAM -u $DB_USER -p$DB_PASS > $BACKUP_DIR/$BACKUP_NAME

Comprimiendo el archivo en tar

echo “Consolidando archivo en tar …” tar -cf $BACKUP_DIR/$BACKUP_TAR -C $BACKUP_DIR $BACKUP_NAME

Comprimiendo el archivo con bzip2

echo ” — Comprimiendo archivo en bzip2 …” bzip2 $BACKUP_DIR/$BACKUP_BZ2

Excluyendo archivos sin procesar

echo ” — Excluyendo archivos innecesarios …” rm -rf $BACKUP_DIR/$BACKUP_NAME

Excluyendo los archivos más antiguos

find /backup/mysql -name “*.tar.bz2” -type f -mtime +$DIAS -exec rm -f {} \;

Guarde el archivo como mysql_backup.sh; Conceda permiso de ejecución con el comando chmod +x mysql_backup.sh; Ahora ejecute el archivo de copia de seguridad con ./mysql_backup.sh.

Crontab - Creación de la programación

Para crear la rutina que ejecuta nuestra copia de seguridad diaria en Linux, usaremos Crontab.

Abra su Crontab:

$ crontab -e

Ahora vamos a crear una programación que se ejecuta todos los días a las 00hs, así que agregue la siguiente línea al final del archivo:

0 0 * * * sh ~/mysql_backup.sh