Respalda bases de datos MySQL automáticamente (Windows)

By Ayram | Ayram | 7 Feb 2020


Una de la cosas que deben saber, es que tengo una cafetería que monté junto con mi esposa* 
Para administrar esta cafetería, me ayudo de un Terminal de Punto de Venta (TPV / POS Por sus siglas en ingles Point Of Sale)**.

Un día, me llevé una desagradable sorpresa, pues resulta que mi disco duro estaba dañado ¡Adiós René!*** ¿Y mi POS? ¿Y mi base de datos?
Bien, tengo el programa en la nube, junto con sus herramientas requeridas, incluso tengo mis hojas de excel, reportes, balances y demás en la nube, pero mi base de datos nunca la respaldé ¡Malaya! Eso, definitivamente lo perdí. Por lo menos tengo todo lo demás. Mis preciosas hojas de excel con sus formulas y mis reportes y balances en perfecto estado.

Tuve que empezar de nuevo a rellenar mi base de datos y verdaderamente que sufrí, pero aprendí que la base de datos también se respalda. Así que les dejo un consejo + un script en Batch que hace la tarea de respaldar la base de datos automáticamente.

Este Batch, lo que hace, es que al ser ejecutado hace una copia de las bases de datos existentes y las pone en una carpeta en específico.
Recordarás que lo pongo todo en la nube. Bien, en mi caso, uso Google Drive, pero puede usar lo que más te guste. Solo asegurate de configurarlo para que lo ponga en la ubicación que más te acomode.

¡Oh! Y uso XAMPP (Por mi propia comodidad), pero puedes usar MySQL tal cual, y no hay problema por esas cosas. De nuevo, solo asegurate de configurarlo correctamente.

 

LO QUE DEBO HACER

Primero instala 7-Zip en tu computadora, pues parte de las tareas que realiza este batch, es comprimir los archivos sql en un zip.

Típico que abres tu bloc de notas o tu editor de texto plano de preferencia, copias el código batch a continuación y lo pegas. Recuerda que debes guardarlo con extensión ".bat" o ".cmd".


@echo off

:: ASEGURATE de cambiar la configuracion de las lineas 4-9
set dbUser="root"
set dbPassword=""
set backupDir="%homepath%\Google Drive\Carpeta_Respaldo"
set mysqldump="C:\xampp\mysql\bin\mysqldump.exe"
set mysqlDataDir="C:\xampp\mysql\data"
set zip="C:\Program Files\7-Zip\7z.exe"

:: Obtiene fechas
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do (
set mm=%%i
set dd=%%j
set yy=%%k
)

if %mm%==01 set Month="Ene"
if %mm%==02 set Month="Feb"
if %mm%==03 set Month="Mar"
if %mm%==04 set Month="Abr"
if %mm%==05 set Month="May"
if %mm%==06 set Month="Jun"
if %mm%==07 set Month="Jul"
if %mm%==08 set Month="Ago"
if %mm%==09 set Month="Sep"
if %mm%==10 set Month="Oct"
if %mm%==11 set Month="Nov"
if %mm%==12 set Month="Dic"

set dirName=%dd%_%Month%_%yy%
set fileSuffix=%dd%-%Month%-%yy%

:: Remueve echo aqui si quieres
echo "dirName"="%dirName%"

:: Cambia al directorio "fecha"
pushd "%mysqlDataDir%"

:: Crea el folder de respaldo si no existe
if not exist %backupDir%\%dirName%\ mkdir %backupDir%\%dirName%

:: itera sobre la estructura de carpetas en la carpeta "datos" para obtener las bases de datos
for /d %%f in (*) do (
:: Remueve echo aqui si quieres
echo Procesando directorios "%%f"

%mysqldump% --host="localhost" --user=%dbUser% --password=%dbPassword% --single-transaction --add-drop-table --databases %%f > %backupDir%\%dirName%\%%f.sql
%zip% a -tgzip %backupDir%\%dirName%\%fileSuffix%_%%f.sql.gz %backupDir%\%dirName%\%%f.sql
del %backupDir%\%dirName%\%%f.sql
)
popd

 

Es una joda estarse acordando de respaldar la base de datos todos los días, cada que vas a hacer el corte de la caja, o cualquier otra actividad.
Por eso, recomiendo hagas una tarea programada para que todos los días, a cierta hora se ejecute este script sin necesidad de estarse acordando de hacerlo. Y a su vez, Google Drive sincronizará los archivos recién respaldados en la nube.

Y, pues, es todo.

Si necesitan más detalles, saben bien que aquí abajo está la caja de comentarios para que me lo hagan saber.

¡Y DEJEN PROPINA! Me alegraría saber que tengo unos morlacos extra en la plataforma.

 

* (Sí. Tengo esposa. Lo siento, chiquillas).
** Uso Chromis POS - Un TPV open source. Si necesitas configurarlo, consúltalo con tu friki favorito.
*** Para una mejor referencia, busca en Google "Adiós, René - Menudo". Y no. No soy tan viejo.

How do you rate this article?

2


Ayram
Ayram

Todologo de la vida. Experto de nada. Experimento muchas cosas y todo para mí es nuevo y difícil. Comparto mis experiencias con el afán de dar un norte si vives la misma situación. Soy milenial, pero de los wenos. Mi Tuister: https://twitter.com/ayramatom


Ayram
Ayram

¡Bien! Este es un blog en español que comparte de todo, un poco. Algo así como un "Life Style", pero de cosas que vivo a diario, y que yo mismo he de estarsolucionar. ¡Ya saben! Soy un "todologo", experto de nada... Quizá algún día me convierta en "Barbie Blogger". | Twitter: @ayramatom

Publish0x

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.