You are on page 1of 3

Hacer un backup mysql con CRON en

Linux
1 mayo, 2007 by olivers61 Comentarios
Es siempre bueno realizar un backup de nuestras bases de datos en caso de algn fallo,
perdida o error humano (que es lo que ms suele ocurrir). Como ya muchos saben Linux
posee una herramienta llamada CRON el cual permite ejecutar tareas repetitivas
periodicamente.
En este tutorial les mostrar como hacer un pequeo script que permite realizar un
backup de la base de datos que tengamos en mysql.
Estoy suponiendo que tienes instalado y configurado un servidor mysql funcionando en
tu computadora o en un servidor remoto y que tienes los privilegios necesarios para
accesar a la base de datos y ejecutar scripts en tu computadora o en el servidor remoto.
Aclarado esto podemos seguir con el tutorial.

Script de Backup Mysql


Primero vamos a crear una carpeta para guardar el backup que vamos a generar, esta
carpeta la puedes crear donde quieras, yo personalmente la cre en mi directorio raz
pero lo puedes crear donde quieras:
mkdir /respaldosql

En nuestro editor de texto favorito escribimos el script que har el backup de la bases de
datos que tengamos en nuestro servidor de MySQL:
#!/bin/sh
mysqldump -uroot -ppwd --opt db1.sql > /respaldosql/db1.sql
mysqldump -uroot -ppwd --opt db2.sql > /respaldosql/db2.sql
cd /home/usuario/respaldosql/
tar -zcvf respaldosql_$(date +%d%m%y).tgz *.sql
find -name '*.tgz' -type f -mtime +2 -exec rm -f {} ;

Guarda este script con el nombre mysqlrespaldo.sh (o el nombre que ms te parezca) en


donde quieras, yo tengo una carpeta llamada scripts en mi directorio home, es a gusto de
cada quien.
Vamos a analizar el script lnea por lnea: la primera lnea #!/bin/sh simplemente le
indica al bash que es un script ejecutable y donde va a buscar el bash que va a utilizar
para ejecutar este script en este caso /bin/sh.
La segunda lnea es la que hace todo el trabajo, mysqldump es un comando que
vuelca o copia todos los datos que estn dentro de la base de datos que le indiquemos
en la lnea de comandos, las opciones son las siguientes:

-u es para indicar el usuario en este caso es root pero puede ser cualquier otro
usuario que tenga privilegios sobre la base de datos

-p es para indicarle el password aqu tienes que colocar el password del usuario
que ests utilizando para conectarte en la base de datos.

opt db1 aqu indicamos cual es base de datos que queremos que copie en este
caso db1

el operador > redirecciona la salida del comando hacia un archivo llamado


db1.sql en una carpeta llamada respaldosql.

La lnea que sigue hace exactamente lo mismo que la primera pero con otra base de
datos llamada db2, puedes agregar tantas base de datos como quieras a este script.
Despus cambiamos al directorio de respaldo donde acabamos de crear los archivos
db1.sql y db2.sql con cd /respaldosql/ y comprimimos todos los archivos en uno solo
con su respectiva fecha con el comando date, esto es para tener un respaldo anterior y
saber cuando lo hicimos, es til en caso de que por alguna razn queramos un respaldo
viejo.
La ltima lnea es opcional, lo que hace es buscar todos los archivos comprimidos que
tengan ms de 2 das y los elimina, esto es para evitar que se nos acumulen archivos
antiguos, puedes cambiar con que frecuencia quieres borrar estos archivos puedes
utilizar man find para mayor informacin.
Muy bien ahora tenemos nuestro script listo lo primero es hacerlo ejecutable:
En Ubuntu:
sudo chmod 700 mysqlrespaldo.sh

En cualquier otra distribucin tenemos que tener privilegios de administrador o root:


chmod 700 mysqlrespaldo.sh

Aadiendo el Script a CRON


Como ya mencion anteriormente CRON es una herramienta que posee Linux para
ejecutar programas o scripts en forma repetitiva. Para modificar la tabla de cron
ejecutamos el siguiente comando en nuestro shell:
crontab -e

Se abrir el crontab en nuestro editor de texto por defecto (en Ubuntu casi siempre se
abre en el nano) aqu agregamos la siguiente lnea y guardamos nuestro archivo:
0 1 * * * /home/usuario/scripts/mysqlrespaldo.sh

Guardamos nuestro archivo y ya est listo para ejecutarse diariamente, vamos a explicar
un poco como funciona (recuerda colocar en /home/usuario/scripts la ruta donde
guardaste tu script).
El archivo de crontab tiene la siguiente estructura de izquierda a derecha:

Minutos (rango de 0-59)

Horas (0-23)

Da del mes (1-31)

Mes (1-12)

Da de la semana (0-6 siendo 0=Domingo)

Path completo al script o programa que queramos ejecutar

Cualquier campo con * quiere decir que se corre a cualquier posible valor de ese campo.
As que en nuestro caso el script correr todos los das a la 1:00 de la madrugada.
Bueno eso fue todo espero que les sirva, como siempre cualquier duda o comentario son
bienvenidos.
Saludos
Olivers

You might also like