Respaldos automáticos en MySQL y Windows
Posted on | Julio 21, 2008 | 27 Comments
Tuve la necesidad de hacer respaldos de forma automática en un servidor web montado en Windows la solución fue hacer un script .bat y éste mandarlo ejecutar con la herramienta de “Tareas programadas”
El script quedó de la siguiente manera:
for /f “tokens=1-4 delims=/ ” %%a in (‘date/t’) do (
set dia=%%a
set mes=%%b
set anio=%%c
)
mysqldump -u user -ppassword database_name > respaldo-%dia%-%mes%-%anio%.sql
Esto generará un archivo .sql con el nombre “respaldo-fecha.sql”.
Este código lo guardas con extensión .bat y lo mandas llamar como decía con las Tareas Programada, esto en Inicio – Programas – Accesorios – Herramientas de Sistema – Tareas programada.
Comments
27 Responses to “Respaldos automáticos en MySQL y Windows”
Leave a Reply

Febrero 4th, 2009 @ 7:23 pm
creo que soy el primero que pone a prueba tu script:
C:\Users\Mario Martinez\Documents>mysqldump
“mysqldump” no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
creo que primero te tienes que logear a mysql y luego hacer el respaldo, saludos
Febrero 5th, 2009 @ 10:35 am
MySql tiene que estar ejecutándose y en la línea de mysqldump le estás pasando el usuario y contraseña.
Intenta colocar el script donde esté el ejecutable de mysqldump.
Saludos
Febrero 5th, 2009 @ 4:51 pm
andale ahora si!! muchas gracias!
Febrero 6th, 2009 @ 1:06 pm
salio otra cosita..
C:\AppServ\mysql\bin>for /f tokens=1-4 delims=/ %a in (date/t) do (
C:\AppServ\mysql\bin>respaldo_mysql.bat
No se esperaba 1-4 en este momento.
C:\AppServ\mysql\bin>for /f tokens=1-4 delims=/ %a in (date/t) do (set dia=%a s
et mes=%b set anio=%c)
Febrero 23rd, 2009 @ 12:12 pm
El script funciona muy bien.
Solo es importante tener en el PATH el directorio de MYSQL que en mi caso
es C:\Program Files\MySQL\MySQL Server 5.0\bin para que el archivo bat
encuentre el comando de mysqldump
Febrero 26th, 2009 @ 5:45 am
Gracias. Va genial!
Comentar a los que tengan problemas que cojan el texto y usen un editor tipo TextPad o Notepad++ y que guarden el fichero como UTF8. Esto lo comento pq si haceis un copy/paste no os ira bien ya que los caracteres no los lee bien windows.
Junio 20th, 2009 @ 8:22 am
donde puedo buscar este respaldo una vez que se ejecuta el respaldo automatico
Junio 20th, 2009 @ 2:04 pm
Verifica que esté donde pusiste el script, si deseas que se guarde en una carpeta determinada pon la ruta en el mismo script, donde está el nombre del archivo de respaldo.
Julio 10th, 2009 @ 9:48 am
El scritp corre muy bien.
Solo hay un problema cuando quiero importar el respaldo desde el appserv no funcion da un error un poco extraño y no importa la bdd nuevamente que debo hacer para que los respaldos sean funcionales.
Saludos,
Julio 10th, 2009 @ 9:59 am
En este caso como el respaldo se hizo, tendrías que enfocarte en el error que te aparece ya que el respaldo lo realiza el comando directo de mysql.
Julio 10th, 2009 @ 12:24 pm
yo he hecho lo siguiente.
Al Principio yo exportaba directamente desde Appserv toda la bdd y al momento de importarla funciona todo normal. Entiendo que el script hace exactamente lo mismo que yo sin embargo hay algunas diferencia entre los archivo que resultan yo estuve revisando internamente el codigo y definitivamente hay diferencias por ejemplo la que se exportan con el script en el encabezado de cada tabla viene lo siguiente
DROP TABLE IF EXISTS
EN LA PARTE DONDE INSERTA LOS DATOS
LOCK TABLE
INSERT INTO (” REGISTROS”)
UNLOCK TABLE
Esto para todas las tablas en el caso de exportarla manualmente esas sentencias no aparecen
Entoces al momento de importar encuentra esas sentencias y hasta ahi nomas llega ya no continua.
Te agradeceria mucho me dieras una idea a resolver este problema ya que el script es la solucion mas adecuada para el problema que tenia de los respaldos automaticos.
Julio 10th, 2009 @ 12:50 pm
¿Importas el respaldo desde consola? porque no es lo mismo que si lo exportas/importas desde phpmyadmin, sería cuestion de que checaras eso.
Para importar desde consola sería algo así:
$mysql -h ip-o-host -u nombreDeUsuario -p nombreBaseDeDatos < backup.sql
Si mal no recuerdo así más o menos va. Si no jala checate en google, debe de haber muchos ejemplos.
Saludos.
Julio 10th, 2009 @ 1:50 pm
Estoy importando desde phpmyadmin el error tiene que ser voy a probar de consola y si no anda te aviso.
De antemano agradezco tu ayuda.
Saludos,
Julio 13th, 2009 @ 5:15 pm
Muy agradecido Tolerantx, ya resolvi el problema, funciona perfecto.
Saludos,
Julio 13th, 2009 @ 8:52 pm
Que bueno que te haya servido, pero te agradecería que pusieras tu solución por si alguien más tiene el mismo problema.
Julio 16th, 2009 @ 10:45 am
Comando para Importar datos desde consola
En la primera parte ponemos la ruta para la ejecucion de MySql seguido usuario y contraseña luego el nombre de la base a la cual vamos a importar nuestras tablas y en la segunda parte ubicamos la ruta donde se guardo el respaldo, esta parte puede variar dependiendo donde ubique el script ( importante para poder importar un respaldo.sql, este debio haber sido exportado por el mysqldump si no no funcionara.
C:\>AppServ\MySql\bin\MySql -uusuario -ppassword nombre_basededatos<C:\AppServe\MySql\Scripts\backup.sql
Una consulta mas respecto al script, se supone este deberia renombrar el archivo exportado con la fecha de en que se realizo la exportacion sin embargo no lo hace ¿ hay que hacer alguna modificacion en codigo del script?
Saludos,
Julio 16th, 2009 @ 10:57 am
Se supone que ésta parte del script es donde se definen los valores de las variables que se insertan en el nombre del archivo
for /f “tokens=1-4 delims=/ ” %%a in (’date/t’) do (set dia=%%a
set mes=%%b
set anio=%%c
)
El script fue creado en windows xp, no sé si por ahí sea el problema.
Saludos.
Agosto 24th, 2009 @ 10:52 am
Hola! tolerantx una vez mas tengo una consulta, veras mi situacion es la siguiente he desarrollado una aplicacion la cual funcionara en diferentes zonas pero sin conexion alguna entre si, cada una tendra su base de datos localmente pero habra una central en la cual se tiene que consolidar todas bdd, lo que necesito hacer es importar los registros de cada bdd de las diferentes zonas a la central sin embargo Mysql no me permite hacer eso ya que cuando importo, jala toda la tabla y luego el error de que esa bdd ya existe.
yo se que se pueden importar solo los registros por que lo hice una vez con un archivo.txt en el cual los campos se encuentra separados por “” y ; y este habia sido exportado desde access, pero en el caso de exportar desde PhpmyAdmin este genera toda la tabla aun si se exporta en archivo de texto.
Saludos,
Agosto 24th, 2009 @ 11:39 am
Primero que nada en phpmyadmin hay una opción por default que es importar también la estructura de la tabla, desactiva ésta opción y se exportarán solamente tus registros.
Ahora si ya solo te exporta los registros sin la tabla necesitas tener cuidado con los ids de los registros con sus relaciones ya que si los tienes relacionados puedes tener serios problemas.
Agosto 24th, 2009 @ 12:11 pm
Si, tienes razon ahora recuerdo haber e haber visto esa opcion no recuerdo si probe a desactivarla seguramente no, por que no me funciono je je!! voy a probar, por cierto que la tabla que necesito exportar tiene dos llaves foraneas aparte del ID principal del registro espero que eso no vaya a causarme problemas. Bueno pero vamos intentar asi y luego te cuento.
Saludos,
Gracias de nuevo.
Agosto 25th, 2009 @ 9:50 am
Buen dia,
Solo para comentarte que probe exportar los registros como explicastes anteriormente y hasta el momento ha funcionado sin problemas. Deshabilite la opcion de estructura y en la seccion de los datos solo habilite la opcion “Usar Hexadecimales para campos binarios” y cambie el tipo de exportacion a “REPLACE” asi al momento de importarlos en bdd central jala sin ningun problema bueno solo probe con pocos registros.
Agradezco tu rapida respuesta,
Agosto 25th, 2009 @ 10:04 am
Excelente
que bueno que hayas resuelto el problema
Saludos
Noviembre 13th, 2009 @ 5:31 pm
Buenas Dia hermano, my bueno tu blog y gracias en vdd me ha servido mucho., solamente tengo una duda, yo estoy utilizando procedimientos almacenados; el detalle es que el respaldo solo se hizo a las tablas, es necesario configurar otra cosa para que el respaldo tbm incluya a los stored procedures?
Noviembre 14th, 2009 @ 1:19 pm
Que tal Giovanni, sobre tu duda igual te puede servir ésto Dumping MySQL Stored Procedures Functions and Triggers
Noviembre 23rd, 2009 @ 11:17 am
hola buen dia, disculpa muy bueno tu aporte… me sirvio de mucho pero tengo una prengunta adicional….en un sistema que diseñe utilice stored procedures quisiera saber si se tiene que modificar algo mas al administrador de mysql para que en elrespaldo incluya los procedimientos ya que actualmente solo me hace respaldo de las tablas…..
saludos y gracias
Noviembre 23rd, 2009 @ 11:18 am
disculpa jejej no habia visto la respuesta arriba …gracias
Enero 22nd, 2010 @ 2:27 pm
eres un ñoño