Aunque en servidores Windows lo más habitual es trabajar con el SQL-Server de Microsoft como SGBD a veces puede tocarnos instalar un MySQL. Entonces nos asalta la duda ¿cómo automatizo un backup de la base de datos? Una de las tareas más habituales de todo administrador.
En la instalación de la base de datos se os instalará el programa mysqldump.exe para la gestión de copias de seguridad. Este programa nos permite, por medio de la línea de comandos, realizar un backup de la base de datos. Con la siguiente sintaxis, a grosso modo, haréis la copia de seguridad:
mysqldump –u (TuUsuario) –p(password) (nombre_base_datos) > (nombreArchivo).sql
Dato importante: entre -u y el nombre de vuestro usuario hay un espacio, entre -p y el password NO. Para más información sobre este comando, podéis visitar el artículo pertinente en el manual de MySQL.
Podéis abrir con CMD un terminal de comandos, situaroes en vuestra carpeta de MySQL y, situándoos allí en la carpeta bin, ejecutar el comando con los parámetros que correspondan para comprobar su funcionamiento. Una vez visto que mysqldump funciona el siguiente paso es crear un script de batch (con la extensión .bat) que ejecute el comando incluyendo la fecha. Los backups los guardaremos en una carpeta llamada C:\backups, y a la hora de escribir el script os vale cualquier editor, mismo el Notepad (aunque yo suelo usar en Windows Notepad++):
echo off set FECHA= %date% set FECHA=%FECHA:/=% mysqldump -e -u root –p7j91lt0y articulos > C:\backups\backuparticulos%FECHA%.sql
NOTA:Edito porque esta semana me he topado con que en el PowerShell de Windows 2k12 no me estaba funcionado esa instrucción, y también me han comentado hoy que el script no funcionaba. Lo mejor es que probéis primero en el intérprete de comandos si funciona, y si os falla la de arriba podéis cambiar la sintaxis por esta:
mysqldump --user=root --password=7j91lt0y articulos > C:\backups\backuparticulos%FECHA%.sql
Con la primera instrucción desactivamos la salida por pantalla de la consola, luego recogemos la fecha actual, la formateamos y finalmente creamos el backup anexando a su nombre la fecha de la copia. En este ejemplo he usado el usario root, recordad siempre que el usuario que utilicéis debe tener permisos en la base de datos para realizar la copia de seguridad. Guardad este script en la carpeta bin de vuestra instalación de MySQL.
Pues ya tenemos el script listo, ejecutadlo con permisos de administrador para ver que funciona. Si os crea un archivo vacío es que algo falla, repasadlo (la sintaxis, la contraseña, el nombre, los permisos tanto en la bd como en el sistema operativo…). Ahora lo que nos queda es automatizar la ejecución del script para programar, por ejemplo, una copia diaria de la base de datos. Para eso os váis al menú de administración del servidor y creáis una tarea básica que ejecute el batch a diario a una hora predeterminada (a poder ser una hora con poca actividad para la base de datos). Para más ayuda con el tema de la automatización podéis visitar la web de Microsoft.
Lo he hecho tal y como dices pero no me crea nada, tengo WAMPSERVER, lo hago con el WAMP arrancado pero no funciona.
Sí, tengo que editar esto porque he comprobado que esto en la vieja consola de comandos de Windows funcionaba bien, pero en el PowerShell en cambio falla. Ahora mismo lo modifico.
Funciona perfecto con la mejora que le hiciste!!
gracias
Muchisimas gracias.
Funciona Super.
Estoy intentando desde un windows 7 64bits.
Me da acceso denegado.
He intentado abriendo una consola de comandos (cmd) en modo administrador y desde ahí convocando al .bat.
Hola amigo creé mi archivo pero al ejecutado me genera un archivo .sql vacio, que podrá ser??
*Por si alguien busca algo como esto .
Me funcionó así en windows server 2008
echo off
set FECHA= %date%
set FECHA=%FECHA:/=%
mysqldump –user=test –password=test Inventario > C:\Users\administrador\Desktop\Respaldos\backupInventario”%FECHA%”.sql
Dos horas tratando de dar con la solucion con la variable concatenada, me leí como 5 foros hice un postgrado en batch hasta que me encontre con tu ayuda, gracias!!!