Inicio > Programacion, Utilidades > Backup Automatico en MySql, Windows y Linux

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

baleog Programacion, Utilidades , , , , , , , , ,

  1. June 18th, 2009 at 01:59 | #1

    el problema es que a la hora de usar el %FILE%en la linea del sql el la integra al password, revisa por favor

  2. pedro
    August 5th, 2009 at 15:37 | #2

    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

  3. pedro
    August 5th, 2009 at 16:49 | #3

    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

  4. Carlos Alonso Rodriguez
    September 22nd, 2009 at 17:51 | #4

    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

  5. julio andres
    October 19th, 2009 at 15:18 | #5

    * 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

  6. January 8th, 2010 at 14:56 | #6

    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

  7. aldo
    January 11th, 2010 at 22:08 | #7

    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”!!

  8. John
    February 15th, 2010 at 17:07 | #8

    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

  1. May 6th, 2009 at 09:07 | #1
  2. May 6th, 2009 at 09:09 | #2
  3. May 6th, 2009 at 15:02 | #3
  4. May 6th, 2009 at 20:24 | #4
  5. May 7th, 2009 at 16:51 | #5