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.