We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Copias de Seguridad MySQL por ZRM


kennysamuerto
09/08/2010, 02:50
Bueno, soy un fanatico de la seguridad. Me llego a obsesionar con ella, lo cual, reconozco y acepto.

Asi que, tengo como 4 o 5 servicios diferentes de Backups rodando sobre los servidores mas importantes, y en general, todos los servidores que pasan por mi mano, utilizan como minimo 2, dependiendo del uso que el cliente le vaya a dar.

Asi que, no podia faltar un sistema de seguridad solo para MySQL. Hoy en dia, un altisimo porcentaje de las aplicaciones web, almacenan sus datos, y por lo tanto, lo mas importante, en las bases de datos, y un altisimo porcentaje, en MySQL.

Esta tarea no lleva mas de 15 minutos, y sabes que siempre tendras tus copias de BBDD seguras.

Recomiendo que ademas de estas, se tengan otros sistemas de backup. Esto solo es complementario, o una forma mas de seguridad.

REQUISITOS
  • MySQL superior a 4.1
  • PERL


VAMOS A INSTALAR
En mi caso utilizo CentOS, por lo que voy a instalar solo las librerias necesarias de Perl.

Código:
yum install perl-libxml-perl perl-dbi perl-xml-parser
Ahora deberemos instalar ZRM, descargando las ultimas versiones de:
http://www.zmanda.com/download-zrm.php

Y Instalamos:

Código:
wget http://www.zmanda.com/downloads/community/ZRM-MySQL/2.2/RPM/MySQL-zrm-2.2-1.noarch.rpm
rpm -ivh MySQL-zrm-2.2-1.noarch.rpm  
wget http://www.zmanda.com/downloads/community/ZRM-MySQL/2.2/RPM/MySQL-zrm-client-2.2-1.noarch.rpm
rpm -ivh MySQL-zrm-client-2.1-1.noarch.rpm
CONFIGURACION

Necesitamos crear un usuario para el Backup:

Código:
mysql -u admin -p mysql 

grant ALL PRIVILEGES on *.* to 'backup'@'localhost' identified by 'mipassword';
Y ahora vamos a pasar a configurar nuestras copias. En este caso, crearemos un backup diario, por lo que crearemos un perfil llamado daily, donde incluiremos el archivo de configuracion por defecto.

Código:
   cd /etc/mysql-zrm  
   mkdir daily  
   cp -pr mysql-zrm.conf daily  
   cd daily
Se recomienda en la documentacion, que para que nadie tenga acceso, el archivo mysql-zrm.conf tenga los permisos necesarios, asi pues:

Código:
chmod 700 mysql-zrm.conf
Ahora procedemos a configurar mysql-zrm.conf. El archivo explica muy bien cada parametro para que se usa, esta configuracion es muy basica:

Código:
#backup-level=0 # Nivel de Backup. En este caso, total.   
#backup-mode=logical # Mediante que hacemos el backup. En este caso, mysqldump  
#destination=/var/copias/mysql # Almacen para los backups
#retention-policy=5D # Tiempo para almacenar los Backups.  
#compress=1 # Comprimir Backups  
#all-databases=1 # Incluir (o no) todas las bases de datos. Este caso, si, pero tambien se puede especificar las BBDD.
#user="backup" # Usuario creado  
#password="mipassword" # Contraseña creada
#mailto="reporte@backups.com" # Correo para recibir reporte
Bien, con esto, hemos terminado. Ahora podemos lanzar una prueba:

Código:
 mysql-zrm-scheduler --now --backup-set daily
Y si no nos devuelve ningun error, esque la prueba es satisfactoria. Podemos comprobarlo, de diversas formas, por Hash, por el estado de los ultimos backups, por rendimiento... yo solo voy a dejar ejemplo de por el estado de los ultimos backups. Todo lo podeis encontrar en la documentacion para el resto.

Código:
#mysql-zrm-reporter --where backup-set=daily --show backup-performance-info  
 
REPORT TYPE : backup-performance-info  
backup_set  backup_date                  backup_level     backup_size  backup_size_compressed     backup_time   backup_type       compress_encrypt_time  
----------------------------------------------------------------------------------------------------------------------------------------------------------------  
daily   lun 02 ago 2010 14:34:23 CET               0       123.43 MB  21.22 MB                   00:00:14      regular           00:01:04

Para programar el backup:

Código:
mysql-zrm-scheduler --add --interval daily --start 03:00 --backup-level 0 --backup-set daily
Y para restaurar:

Código:
mysql-zrm -restore --backup-set daily --source-directory /directorio de backup a restaurar
Un Saludo!