Copia de seguridad de MySQL en Windows sin programas de manera automática y manual

· 3 min de lectura
Copia de seguridad de MySQL en Windows sin programas de manera automática y manual

Es muy importante siempre contar con un Backup de nuestra base de datos, cuando estemos creando un sitio web, trabajando con un sistema local o al tener implementado una base de datos en un ordenador o servidor Windows, etc. para esta tarea existen muchos programas que permiten realizar este proceso, pero es algo que puedes realizar solo usando la consola CMD, o un archivo .bat.

Para realizar un Backup usando cmd de nuestra base de datos, el proceso es situarnos en el directorio donde tenemos instalado MySQL >> bin, Ejemplo: la ruta donde tengo instalado MySQL con Laragon sería la siguiente.

cd C:\laragon\bin\mysql\mysql-5.7.24-winx64\bin

seguidamente ingresamos con nuestro usuario y contraseña (Reemplaza root si el usuario de acceso es diferente)

mysql -u root -p

puedes ver tus bases de datos con el comando

show databases;

Para generar el Backup o exportar la Base de datos usamos el siguiente comando

mysqldump -u username -p database_name > backup.sql

Donde.

username debe reemplazarse con el usuario asignado a la base de datos.

database_name nombre la base de datos a exportar.

backup.sql es el archivo que generará con la información de la base de datos.

El archivo se genera en la carpeta bin de MySQL.

Para realizar este proceso de manera automática puedes usar el siguiente script .bat, junto al programador tareas de Windows.

@echo off
 
::Carpeta destino de la copia
set bkupdir=F:\Backups\MySQL\zprueba
 
::Carpeta donde está instalado MySQL Server
set mysqldir=C:\xampp\mysql
 
::Carpeta donde están los datos del servidor MySQL Server
set datadir=C:\xampp\mysql\data
 
::Carpeta donde se guardará el fichero de log
set logdir=F:\Backups\MySQL\zprueba
 
::Usuario y contraseña de acceso al servidor MySQL
set dbuser=root
set dbpass=
 
::Debe descargar el fichero gzip.exe e indicar su ubicación (http://gnuwin32.sourceforge.net/downlinks/gzip.php)
set zip=F:\Backups\MySQL\z_software_copia\gzip.exe
 
set endtime=0
 
::Obtenemos el día y la hora para añadir como sufijo al nombre del fichero de backup
:GETTIME
 
for /F "tokens=1,2,3 delims=/" %%i  in ('echo %date%') do (set dia=%%k%%j%%i)
for /F "tokens=1,2,3 delims=:, " %%n  in ('echo %time%') do (set hora=%%n%%o%%p)
 
:: Si ha acabado el script y sólo se pide la hora vamos al final
if "%endtime%"=="1" goto END
 
set fn=_%dia%_%hora%
 
:: Escribimos en el fichero de log
echo Iniciando proceso de backup de MySQL > %logdir%\resultado_%fn%.log
echo Hora de inicio = %dia% %hora% >> %logdir%\resultado_%fn%.log
echo --------------------------- >> %logdir%\resultado_%fn%.log
echo. >> %logdir%\resultado_%fn%.log
 
:: Cambiamos al directorio de datos para enumerar las carpetas
pushd %datadir%
 
:: Bucle para obtener las carpetas del directorio de datos una a una
:: Creamos el subdirectorio de backup si no existe en el destino indicado
:: Uno por cada BD del Servidor de MySQL)
for /d %%f in (*) do (
if not exist %bkupdir%\%%f\ (
echo Creando carpeta %%f
echo Creando carpeta %%f >> %logdir%\resultado_%fn%.log
mkdir %bkupdir%\%%f
) else (
echo La carpeta %%f ya existe
echo La carpeta %%f ya existe >> %logdir%\resultado_%fn%.log
)
 
:: Ejecutamos mysqldump para cada base de datos y comprimimos el resultado con gzip
echo Haciendo backup de %%f%fn%.sql.gz
echo Haciendo backup de %%f%fn%.sql.gz >> %logdir%\resultado_%fn%.log
%mysqldir%\bin\mysqldump --user=%dbuser% --password=%dbpass% --databases %%f --opt --quote-names --allow-keywords --complete-insert | %zip% > %bkupdir%\%%f\%%f%fn%.sql.gz
echo Finalizado backup...
echo Finalizado backup... >> %logdir%\resultado_%fn%.log
)
 
:: Volvemos a la etiqueta GETTIME para obtener la hora de finalización del script
:: Ponemos a 1 "endtime" para que no vuelva a ejecutar las copias
set endtime=1
goto :GETTIME
 
:END
:: Escribimos el resulado en el fichero de log
echo. >> %logdir%\resultado_%fn%.log
echo --------------------------- >> %logdir%\resultado_%fn%.log
echo Proceso de backup de MySQL finalizado >> %logdir%\resultado_%fn%.log
echo Hora de finalización = %dia% %hora% >> %logdir%\resultado_%fn%.log
echo. >> %logdir%\resultado_%fn%.log
 
:: Volvemos al directorio del script
popd

Dato* Puedes encontrar mas de este srcript en la página https://proyectoa.com, en cual se genera usando Xampp(Solo debes modificar las rutas si el direcctorio es diferente), puedes revisar la documentación.

Cómo hacer copia de seguridad de MySQL Server programada en Windows sin software de terceros | Proyecto A

Para restaurar el proceso es importar la base de datos el cual puedes realizar copiando el archivo  respaldado (ejemplo: backup.sql) en la carpeta bin de MySQL, seguidamente ejecutando el siguiente comando.

mysql -u username -p database_new < backup.sql

👋¿Te ha resultado útil esta información?

ko-fi.com/erwinnahue

Artículos Relacionados

Como mostrar publicaciones de Twitter en WordPress
· 2 min de lectura