Respaldo Autómatico Remoto de Bases de Datos (mysql) con secure copy (scp) y Cron

agosto 4, 2009 at 11:35 Deja un comentario

En este documento se explica cómo desde Linux generar un respaldo para una base de datos mysql y copiarlo a una computadora remota que también corre Linux. (probado en Ubuntu)

Tener respaldos de una base de datos siempre es importante, y estos respaldos deberían ser almacenados en un lugar remoto, como otro servidor por ejemplo.

Para llevar a cabo esta tarea nos valeremos del comando scp de Linux para copiar archivos de manera segura y remota y del administrador de tareas Cron de Unix (disponible en Linux).

Lo primero que necesitamos es que el scp nos deje conectarnos desde el cliente al servidor  sin solicitarnos contraseña ya que en caso contrario no podemos automatizar la copia de archivos en un script.

Lo que vamos a hacer es sustituir el uso de una contraseña por el método de criptografía asimétrica en el que se utilizan un par de llaves: una pública y una privada.

Para llevar a cabo lo anterior se deben seguir estos pasos:

  • Desde la Máquina Cliente (que es dónde se va a generar el respaldo de la base) verificamos que el archivo /etc/ssh/sshd_config tenga las siguientes líneas (que de manera predeterminada ya están):

    RSAAuthentication yes
    PubkeyAuthentication yes
    
  • Luego escribimos en consola el siguiente comando para generar las llaves:
    # sudo ssh-keygen -t rsa
    

    Se mostrará el siguiente texto preguntando adónde se quiere guardar el archivo que contiene las llaves, de manera predeterminada en /root/.ssh/id_rsa:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    

    Damos enter y ahora se preguntara por una clave, en este caso la dejamos en blanco por lo que damos enter dos veces, se mostrará información referente a los lugares dónde se almacenaron las claves públicas y privadas.

  • Ahora debemos transferir la clave pública recién generada al servidor remoto, para ello utilizamos el comando ssh-copy-id:

    ssh-copy-id -i /root/.ssh/id_rsa.pub usuario@ip_servidor

    Se nos pedirá la contraseña, la escribimos y damos enter, a partir de este momento ya no se nos solicitará contraseña al conectarnos a esta computadora, por lo tanto el comando scp ahora puede utilizarse libremente en un script que copie archivos.

    Lo siguiente es un apunte, probablemente no necesite realizar lo siguiente: el servidor al que me conecto vía ssh utiliza otro puerto que no es el predeterminado 22 por lo tanto el procedimiento anterior debe hacerse de la siguiente manera, desde consola:

    sudo vim /root/.ssh/config

    Y añadimos:

    Host miServidor
    Hostname ip.del.servidor.deseado
    User usuario
    Port puerto
    

    Luego:

    sudo ssh-copy-id -i /root/.ssh/id_rsa.pub miServidor
  • Ahora creamos un script para bash que haga un dump de la base de datos a respaldar, la comprima y la transfiera a otra máquina, para ello creamos un nuevo archivo y agregamos lo siguiente:

    #!/bin/bash
    fecha=$(date +%Y%m%d)
    mysqldump -u[usuario] -p[contraseña] [nombre_base] > /home/usuario/bd_$fecha.sql
    bzip2 /home/usuario/bd_$fecha.sql         
    scp /home/vas/bd_$fecha.sql.bz2 [miUsuario]@[ip_servidor]:/home/usuario

    Se deben sustituir los campos [usuario] y [contraseña] por el nombre de usuario y contraseña utilizados para conectarse al gestor de base de datos mysql y el campo [nombre_base] por el nombre de la base de datos a respaldar, así mismo [miUsuario] y [ip_servidor] por el nombre de usuario e ip del servidor utilizados anteriormente en el comando sh-copy-id e ignorando los [ ].

    Guardamos el archivo con el nombre backup_bases.sh en la ruta /home/usuario/Documentos

  • Ahora vamos a agregar el script como una rutina del sistema con el cron, para ello digitamos en consola:

    sudo crontab -e

    Y añadimos lo siguiente para que los respaldos se hagan martes a las 10 am:

    # m h  dom mon dow   command
      0 10 * *  2        /home/usuario/Documentos/backup_bases.sh
    

Listo listo
setas
Enjoy!

Entry filed under: bases de datos, linux, red, servidores, sistemas operativos. Tags: , , , , .

Cómo usar Subversion Controladores creados con Spring, usando Anotaciones y que son depurables (debugeables) en Netbeans

Dejáte un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Digo yo

Que dura está la vida

Dice Jhon Lennon

La vida es lo que pasa mientras haces planes

Digo yo

Dónde haya un computín esté dónde esté algo comenzará en cero

Acerca de Mi:


Hell-Out world!!

Dice Einstein

Dios no juega a los dados

Dice Niels Bohr

Einstein no le diga a Dios lo que tiene que hacer

Dice el Che:

Seamos realistas y hagamos lo imposible.

Dice Goethe:

Lo que no comprendemos no lo poseemos.

Digo yo:

Hay que tratar de travesear todo

Dice Oscar Wilde:

Cualquier hombre puede llegar a ser feliz con una mujer, con tal de que no la ame.

Digo yo:

De fijo dijo eso porque era homosexual.

Artículos

agosto 2009
L M X J V S D
« Jul   Sep »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

A %d blogueros les gusta esto: