Jump to content

Cómo hacer backup de tus datos en OVH


Shogun
 Share

Recommended Posts

Hola a todos,

Hoy voy a explicar cómo crear automaticamente una copia de seguridad de nuestra base de datos y almacenarla en el espacio de almacenamiento que OVH incluye gratuitamente con sus servidores dedicados.

La ventaja de este método es que incluso en caso de fallo del hardware, nuestros datos quedarían a salvo al estar en una máquina diferente; por otro lado, este sistema no nos salvará si un hacker gana acceso a nuestro sistema, ya que podría acceder a la partición de backup y destruir dichas copias de seguridad. Así que, si nuestros datos son realmente valiosos, conviene o bien  descargarse de vez en cuando estas copias de seguridad o almacenarlas en otro servidor completamente distinto donde la máquina no tenga permisos para borrarlos.

Películas de Hackerman aparte (hola SG) volvamos por un momento a la realidad cotidiana y veamos cómo montar esta unidad de backup gratuita.

En primer lugar tenemos que otorgar acceso a ella a nuestro servidor, así que en el panel de control del mismo en OVH haremos click en la pestaña de Backup Storage y a continuación en el botón Añadir un Acceso, tras lo cual marcamos la casilla NFS y aceptamos.

ovh_backup_1.png

En esta pantalla se nos proporcionan dos datos que necesitaremos para crear nuestro script de backup, en concreto Nombre y Usuario.

A continuación abrimos una sesión SSH a nuestro servidor y ejecutamos los siguientes comandos para montar el acceso al almacenamiento NFS:

mkdir /backups
mount -t nfs <Nombre>:/export/ftpbackup/<Usuario> /backups

Los más avispados habrán notado que hay que reemplazar <Nombre> y <Usuario> por los correspondientes que nos muestra OVH en el panel.

Nuestro espacio de backup quedará ahora montado como /backups y podemos probar a copiar cosas en él. Pero claro, es un poco pesado andar copiando a mano, así que, ¿porqué no hacer que nuestra base de datos se copien automaticamente?

Veamos a continuación un script que nos ayudará a ello almacenando las bd que indiquemos en nuestra unidad NFS, y borrandolos automaticamente despues de 7 dias.
 

#!/bin/sh

MYSQLDUMP=/usr/local/bin/mysqldump
GZIP=/usr/bin/gzip

MAX_AGE=7
DAY=$(date +"%Y-%m-%d")
FILETIME=$(date +"%Y-%m-%d.%T")
BACKUP_DIR="/backups"
BACKUP_NAME="<Nombre>"
BACKUP_ID="<Usuario>"
MYSQL_USER="root"

DATABASES="cats rabbits dogs"

#Comprobar que la unidad esta montada
if [ ! -d "$BACKUP_DIR" ]; then
  echo -e "\033[32mMontando unidad de backup...\033[0m"
  mkdir $BACKUP_DIR
  mount -t nfs $BACKUP_NAME:/export/ftpbackup/$BACKUP_ID $BACKUP_DIR
fi

#Borrar backups viejos
echo -e "\033[32mBorrando los backups con mas de $MAX_AGE dias de antiguedad...\033[0m"
find $BACKUP_DIR/* -type d -ctime +$MAX_AGE | xargs rm -r

echo -e "\033[32mCreando directorio $BACKUP_DIR/$FILETIME...\033[0m"
mkdir $BACKUP_DIR/$FILETIME

for db in $DATABASES
do
        FILE=$db.gz
        echo -e "\033[32mVolcando $db...\033[0m"
        $MYSQLDUMP -u $MYSQL_USER -e --single-transaction --quick $db | $GZIP -9 > $BACKUP_DIR/$FILETIME/$FILE
done

echo -e "\033[32mListo!\033[0m"

Para ponerlo en práctica, id por ejemplo al directorio /root y abrid el editor ee (o el que más os guste) en el putty y copiad y pegad este script.

ee /root/backup.sh

Para que funcione con vuestra bd y servidor debeis editar estas variables:

  • BACKUP_NAME, BACKUP_ID: los campo "Nombre" y "Usuario" que vimos antes en OVH.
  • DATABASES es una lista de las bases de datos que queremos hacer backup, separadas por un espacio.

Asimismo podemos cambiar la frecuencia de borrado en MAX_AGE.

Una vez modificado a nuestra conveniencia, podemos probarlo con este comando:

sh backup.sh

Una vez comprobado su buen funcionamiento (es decir, nuestras bd se guardan en /backups con su fecha y hora) procedemos a establecer un backup diario por medio de cron:

crontab -e

En la pantalla que se nos presenta escribimos:

3	*	*	*	*	sh /root/backup.sh

(¡Ojo al tabulador entre cada estrellita, y entre la última y sh!) Esto hará que el backup se ejecute todos los días a las 3 AM.

Es importante señalar que en el caso de bd grandes, el backup puede causar lag en el servidor. Existen diferentes estrategias para minimizar el impacto que se salen del objetivo de este artículo.

 

Nota 1

En caso de no disponer de un servidor dedicado OVH con almacenamiento backup, podemos simplemente crear un directorio llamado /backups sin montar nada y borrar esta parte:

#Comprobar que la unidad esta montada
if [ ! -d "$BACKUP_DIR" ]; then
  echo -e "\033[32mMontando unidad de backup...\033[0m"
  mkdir $BACKUP_DIR
  mount -t nfs $BACKUP_NAME:/export/ftpbackup/$BACKUP_ID $BACKUP_DIR
fi

Esto almacenara las copias de seguridad localmente en el propio servidor, lo cual no es ideal pero sin duda es mejor que nada.

 

Nota 2

Este script asume que el usuario root de MySQL no tiene contraseña, pues así es por defecto al instalar MariaDB (la bd que uso yo) en FreeBSD.

Si no es así en vuestro servidor, podéis hacer una de estas dos cosas para que el script pueda funcionar:

 

Opción A: Crear un fichero /root/.my.cnf con el siguiente contenido:

[client]
user=root
password=<vuestra pass de mysql>

Estos datos de conexión serán entonces utilizados automáticamente por cualquier programa que use MySQL y se ejecute bajo el usuario de sistema root.

 

Opción B: (preferible) Permitir al usuario root loguearse localmente sin contraseña:

Entrasmos en la consola mysql:

mysql -uroot -p

Y después de escribir nuestra contraseña, ponemos:

ALTER USER 'root'@'localhost' IDENTIFIED VIA unix_socket;

 

Cualquier duda sobre este tutorial la puedo resolver aquí, si necesitáis ayuda más personalizada os invito a contratar mis servicios a través de discord: Smokebomb#5154, o a consultar este y otros tutoriales en inglés en mi

Debes iniciar sesión para ver el contenido del enlace en esta publicación.
.

Edited by Shogun
Actualizado y ampliado con notas
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...