[Como] 2 Formas de Hacer Backup Remoto a Bases de Datos Mysql

script mejorado vía skamasle.com respaldar todas las bases de datos del servidor y transferirlas:

Script – Respaldar bases de datos Mysql y Transferirlas por FTP o SSH [SK-ServerUP]
———————–
———————–
———————–
———————–
Hoy les traigo un pequeño tutorial sobre como hacer backup remoto a nuestra base de datos en MySQL, aunque más que tutorial son dos scripts que hay que poner en el Cron para hacer el backup y listo.

El primer script es de blog.secaserver.com, una excelente explicación sobre sobre como hacer backups de mysql en un servidor remoto cada media hora.

El script esta hecho en bash y es este: ( pueden ver más info en el enlace de seca server que deje arriba ):

Script en Bash para Hacer Backup de Mysql

#!/bin/bash
# Scripts to create mysql backup every half and hour

# Confiration value
mysql_host=””
mysql_database=””
mysql_username=””
mysql_password=”
backup_path=/backup/mysql
expired=3 #how many days before the backup directory will be removed

today=`date +%Y-%m-%d`

if [ ! -d $backup_path/$today ]
then
mkdir -p $backup_path/$today
else
/usr/bin/mysqldump -h $mysql_host -u $mysql_username -p$mysql_password $mysql_database > $backup_path/$today/$mysql_database-`date +%H%M`.sql
fi

# Remove folder which more than 3 days
find $backup_path -type d -mtime +$expired | xargs rm -Rf

Que hace el script ?

En resumen se conecta a la base de datos cada media hora, y hace un respaldo, cada respaldo tiene como nombre el dia y la hora en el que se hizo, los backups los deja durante 3 días , o sea que si tienen más de 3 días en el server los va borrando.

Los datos más importantes para configurar son estos:

mysql_host="IP o host"
mysql_database="nombre de la BD"
mysql_username="usuario de la bd"
mysql_password='contraseña de la bd'
backup_path=/backup/mysql # esta es la ruta donde se guardará el backup
expired=3 # y este es el tiempo que duran los backups en el server antes de borrarse ( en días )

Básicamente es eso, ahora bien el según script es de dreamingbytes.com un poco más sencillo que el de secaserver y además de eso hecho en python.

Script en Python para Hacer Backup Remoto de Mysql

#!/usr/bin/python
import datetime
import os
command = “mysqldump -h [nuestro.servidor.com_o_IP] -u [usuario] -p[password] [base_de_datos]”
# Objeto HOY
today = datetime.date.today()
# Formatea como YYYYMMDD
fecha = today.strftime(“%Y%m%d”)
# Fichero de salida
file = “backup_Servidor_”+fecha
command = command+” > /home/javi/backups/Servidor/”+file+”.sql”
os.system(command)

En este script lo que hay que cambiar son los datos de la linea: mysqldump -h [nuestro.servidor.com_o_IP] -u [usuario] -p[password] [base_de_datos]

Y también la ruta en donde se guardará el backup /home/javi/backups/Servidor/”+file+”.sql

El proceso es muy similar al del script de secaserver, se conecta al servidor remoto y hace un backup, el nombre lo define la fecha y la hora en la que se hace el backup.

Eso es todo en cuanto a los backups, es bastante sencillo, aunque falta algo por comentar y es como se define cuando se hacen los backups, eso lo definimos nosotros, tenemos que guardar el script en el servidor con algún nombre, por ejemplo backup-skamasle, y luego crear un cron.

En el caso del script de secaserver, un backup cada media hora:

*/30 * * * * root /bin/sh /home/scripts/backup-skamasle

O si lo queremos una vez al día, a las 12AM

0 0 * * * root /bin/sh /home/scripts/backup-skamasle

O cada hora al minuto 15

15 * * * * root /bin/sh /home/scripts/backup-skamasle

En caso de que usemos el sistema de dreamingbytes tenemos que crear un cron similar solo que en vez de /bin/sh usaremos /usr/bin/python y el fichero en donde guardemos el script ha de llamarse backup-skamasle.py como sea, pero con extensión .py, y se puede programar a cualquier hora.

15 * * * * root /usr/bin/python /home/scripts/backup-skamasle.py

Eso es todo, como NOTA root es el usuario que ejecutara el cron, si tienen otro usuario o no puede ser root tienen que cambiarlo y si se preguntan a donde tienen que poner el cron, la ruta es:

/etc/crontab

Luego de editar elfichero hay que reiniciar cron:

En debian:

/etc/init.d/crond restart

En Centos el mismo o bien:

service crond restart

Eso sería todo, ya tenemos programado un backup de nuestra base de datos en un servidor remoto.

Ah lo único que faltaría es configurar el mysql en el servidor en donde esta la base de datos para que permita conexiones externas.

Para eso podemos editar el my.cnf y comentar con una almohadilla la linea que dice bindadress 127.0.0.1.

El my.cnf se encuentra en /etc/my.cnf si están en centos y si están en debian en /etc/mysql/my.cnf

Eso si tienen el acceso al servidor vía SSH, si no lo tienen, y usan cPanel pueden ir a la sección de bases de datos, y la que dice Remote MySQL le dan clic, entran y dirá add Remote Host, en esa linea ponen la IP de su servidor, esto permitirá a su servidor conectarse a la base de datos y no a todos los servidores / IPs como en el caso de que comentemos la directiva bindadress en my.cnf.

Ahora si, con esto lo tienen todo para hacer un backup remoto de su base de datos.

En fin con este manual tenemos:

Backup Remoto de la Base de datos

Programar Backup de Mysql

Agradecimientos a Secaserver.com
Y a Dreamingbytes.com por los scripts.