Backup Automatico en MySql, Windows y Linux
Esta semana necesitaba en mi trabajo programar un Backup Automatico de una Base de Datos en MySql para uno de los clientes, desgraciadamente el servidor en el que corría la aplicación estaba sobre Windows, por lo que después de buscar mucho en internet por fin pude solucionarlo.
Por eso quise traerles este pequeño resumen de los pasos para realizar un Backup tanto en servidores Windows como Linux.
Windows
Primero vamos a comenzar con un servidor en Windows.
Para realizar un backup automático de MySql en Windows haremos uso de el comando mysqldump, este comando sirve específicamente para hacer backups.
Esta aplicación esta dentro de la carpeta bin de donde este instalado MySql.
Para ejecutarlo directamente deberemos poner la ruta de la carpeta bin dentro del Path de Windows o poner la ruta completa al ejecutar el comando, en el ejemplo lo haremos de la segunda forma.
Suponiendo que tenemos instalado MySql dentro de la carpeta C:/mysql/ el modo de usar este comando es el siguiente.
C:/mysq/bin/mysqldump.exe -h SERVER -uUSER -pPASSWORD -r FILENAME.sql DBNAME
Donde:
SERVER: es el servidor, si lo estamos ejecutando desde el mismo servidor seria localhost
USER: nombre de usuario, generalmente root
PASSWORD: contraseña del usuario
FILENAME: nombre del archivo donde se guardara el respaldo, si no existe lo creara o en caso contrario lo reemplazara.
DBNAME: Nombre de la base de datos
Realmente sencillo, pero si lo que queremos es programar un Backup automático podemos crear un archivo .bat de la siguiente forma.
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set FILE=C:\\Backups\\Backup_%FECHA%.sql
C:/mysql/bin/mysqldump.exe -h SERVER -uUSER -pPASWWORD -r %FILE% DBNAME
Este Script nos creara un archivo de respaldo dentro de la carpeta C:\Backups\ con el nombre Backup_20090210.sql el formato de la fecha depende del que tengamos configurado en el computador, es posible que quede por ejemplo con el nombre Backup_Wed20090210.sql
Si queremos hacer esto automáticamente solo crearíamos una tarea programada que nos ejecute este script a una hora del día y listo.
Se debe tener en cuenta que este crearía un archivo diferente por cada día, por lo que es posible que en algún momento comience a consumir mucho espacio de disco, por lo que seria útil hacer de vez en cuando una limpieza de backups viejos.
Linux
Para hacer el respaldo en linux, lo haríamos usando el mismo comando mysqldump, pero lo usaríamos de la siguiente manera.
mysqldump —user [USER] —password=[PASSWORD] [DBNAME] > [FILENAME.dump]
Si quisiéramos sacar el Backup y guardarlo comprimido de una vez, usaríamos la instrucción gzip, así.
mysqldump —user [USER] —password=[PASSWORD] [DBNAME] | gzip > /usr/local/FILENAME.gz
Si queremos hacerlo como en el caso de Windows y generar el nombre del archivo concatenando la fecha usaríamos esta linea.
mysqldump —user [USER] —password=[PASSWORD] –all-databases | gzip > /mnt/disk2/backup_`data ‘+%m-%d-%Y’`.gz
Se puede observar que en esta instrucción usamos la opción –all-databases la cual nos hace un respaldo de todas las bases de datos en el servidor de las cuales el usuario tenga permisos.
Si queremos obtener solo el Schema de la Base de Datos, sin ninguna información en las tablas, debemos usar la opción –no-data
mysqldump —user [USER] —password=[PASSWORD] –no-data –databases mydatabase1 mydatabase2 mydatabase3 > FILENAME.dump
Notese que usamos también la opción –databases para especificar de que Bases de Datos queremos hacer el respaldo.
Finalmente para que el Backup se ejecute automaticamente hariamos uso del fichero crontab del cual podemos encontrar mas informacion en este enlace.
Vía | SitePoint




el problema es que a la hora de usar el %FILE%en la linea del sql el la integra al password, revisa por favor
hola muy bueno tu aporte lo unico que tengo un problema en windows yo ejecuto el comando siguiente en la ventana del DOS y me funciona barbaro:
mysqldump.exe -all -uroot -ppasword -rd:\backups\pruebaSql.sql nombre_base
El problema es cuando quiero ejecutar el .bat y me tira un error, mi archivo es el siguiente:
C:/Archivos de programa/MySQL/MySQL Server 5.1/bin/mysqldump.exe -all -uroot -ppasword -rd:\backups\pruebaSql.sql nombre_base
no me genera el archivo
saludos nos vemos
me funciono muy bin lo tuve que mover a otra carpeta pero la linea
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set FILE=C:\\Backups\\Backup_%FECHA%.sql
C:/mysql/bin/mysqldump.exe -h SERVER -uUSER -pPASWWORD -r %FILE% DBNAME
tiene un error en la linea 3 deberia quedar algo como esto
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set FILE=C:\\Backups\\Backup_%FECHA%.sql
C:/mysql/bin/mysqldump.exe -h SERVER -uUSER -pPASWWORD -r %FILE% DBNAME
Hola como se hara con el password si no lo tiene; osea el usuario es root y no tiene contraseña
osea que el archivo debera quedar asi?
ECHO OFF
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set FILE=C:\\Backups\\Backup_%FECHA%.sql
C:/mysql/bin/mysqldump.exe -h localhost -uroot -p -r %FILE% conductork
* PRESIONAMOS LA TECLA WINDOWS + R
* DIGITAMOS CMD
*********************************
1.digitamos
CD..
DAMOS ENTER
2.digitamos
CD..
DAMOS ENTER
3.digitamos
DIR
DAMOS ENTER
4. DIGITAMOS
CD”PROGRAM FILES”
DAMOS ENTER
5.DIGITAMOS
CD>MYSQL
DAMOS ENTER
6.DIGITAMOS
CD “MYSQL 5.0″
DAMOS ENTER
7.DIGITAMOS
DIR
DAMOS ENTER
8.DIGITAMOS
CD BIN
DAMOS ENTER
9.DIGITAMOS
mysqldump -u root -p –opt guiasturismo >C:/copias/guias11.sql
DAMOS ENTER
10.DIGITAMOS LA CONTRASEÑA DE MYSQL
“la que se haiga dado en la instalacion de mysql”
DAMOS ENTER
11.VERIFICAMOS SI GUARDO EN LA RUTA CORRECTA EN ESTE CASO ES EN
EL DISCO C EN UNA CARPETA LLAMADA COPIAS
Hola tengo un problema para el manejo en linux, quiero hacer un respaldo pero con nombre aleatorio, es decir con la fecha al final, pero no me general nada :S
hola….el script es funcional…..solo que al ejecutarlo, me aparece la ventana del MSDOS y me pide la contraseña de la base de datos , que en este caso no es ninguna, asi que hasta que no le de “enter” no se crea el respaldo….
alguien me puede decir que agregar al archivo. bat para que de ese “enter” automatico al ultimo ?
Gracias”!!
Excelente Tutorial, me ha sido de gran ayuda, con respecto a los que Usamos el Root sin clave, Quitar del codigo esta parte -pPASWWORD y listo!!!
Saludos