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?
- Creación de copias de seguridad de MySQL diariamente en Windows
- Creación de copias de seguridad de MySQL diariamente en Linux
¿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.

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