Herramientas personales

Respaldo base datos mysql

De Proyectos GULIX

Tabla de contenidos

Respaldar base datos mysql + xampp + cron

Respaldar base datos mysql + xampp + cron.

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 raíz pero lo puedes crear donde quieras:

mkdir /respaldosql

Script de backup mysql

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
/opt/lampp/bin/mysqldump -uroot -pnixon --opt dokeos_main > /respaldosql/dokeos.sql
# mysqldump -uroot -ppwd --opt db2.sql > /respaldosql/db2.sql
cd /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 más te guste) en donde quieras, yo tengo una carpeta llamada scripts en mi directorio home, es a gusto de cada quien.

Analizando el script línea por línea:

Linea I

La primera línea #!/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.

Linea II

La segunda línea es la que hace todo el trabajo, mysqldump es un comando que “vuelca” o copia todos los datos que estén dentro de la base de datos que le indiquemos en la línea 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 estás 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.

Linea III

La línea 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.

Linea IV

Después cambiamos al directorio de respaldo donde acabamos de crear los archivos db1.sql y db2.sql con cd /respaldosql/

Linea V

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 razón queramos un respaldo viejo.

Linea VI

La última línea es opcional, lo que hace es buscar todos los archivos comprimidos que tengan más de 2 días 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 información.

Permisos de ejecución

Muy bien ahora tenemos nuestro script listo lo primero es hacerlo ejecutable:

En Ubuntu:

 sudo chmod 700 mysqlrespaldo.sh

En cualquier otra distribución tenemos que tener privilegios de administrador o root:

 chmod 700 mysqlrespaldo.sh

Añadiendo el script a cron

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 línea 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)
  • Día del mes (1-31)
  • Mes (1-12)
  • Día 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 días a la 1:00 de la madrugada.

Nota I

Para buscar find / | grep .sql

Nota II

El xampp el mysqldump esta en esta ruta /opt/lampp/bin/mysqldump y se podria ejectuar como :

root@Libertad:/respaldosql# /opt/lampp/bin/mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

Conclusiones

  • Bueno, eso fue todo espero que les sirva, como siempre cualquier duda o comentario son bienvenidos, ademas si deciden complementar esta información bienvenido sera.

--NiXoN 16:15 30 abr 2011 (ART)

Leer más

Autores de este Resumen

--NiXoN 16:15 30 abr 2011 (ART)


Buscar