Date post: | 10-Apr-2015 |
Category: |
Documents |
Upload: | elias-alonso-gomez-cornejo |
View: | 212 times |
Download: | 0 times |
Caso práctico: backup incremental de tablas InnoDB
● Vamos a hacer un backup de una BBDD InnoDB tal que:● Sea incremental● Conserve un historial de versiones● Local o remoto● No sea necesario detener el servidor● No sea necesario bloquear las tablas
Caso práctico: backup incremental de tablas InnoDB
● Prerequisitos● LVM2
$ sudo apt-get install lvm2● rdiff-backup
$ sudo apt-get install rdiff-backup
Caso práctico: backup incremental de tablas InnoDB
● Modificaciones de la BBDD● Migrar el archivo de datos a un volumen LVM
Caso práctico: backup incremental de tablas InnoDB
● Logical Volume Manager (LVM)● Abstracción del almacenamiento en disco● Mucha más flexibilidad para gesitonar particiones● Permite hacer instantáneas de un volumen
Caso práctico: backup incremental de tablas InnoDB
● Logical Volume Manager (LVM)● Resumen conceptual:
– En vez de discos duros, la entidad de almacenamiento de LVM son los “grupos”
– A un “grupo” se le asignan (a voluntad) particiones (/dev/hd_N, /dev/sd_N, ..)
– El “grupo” trata el espacio total de todas sus particiones como una piscina de bloques
– Dentro de el grupo se pueden crear “volúmenes” a los que se les asigna:
● Un tamaño (menor o igual al espacio total del grupo)● Un nodo en /dev/<nombre_grupo>/<nombre_volumen>
Caso práctico: backup incremental de tablas InnoDB
● Logical Volume Manager (LVM)● Montándolo en la máquina virtual:
– Crear dos discos duros nuevos– Inicializarlos para LVM# pvcreate /dev/hd_# pvcreate /dev/hd_
– Crear un grupo LVM# vgcreate grupo1 /dev/hdd /dev/hdb
– Crear un nuevo volumen LVM# lvcreate -L<numeroMb> -ndatos_mysql# mkfs.ext2 /dev/grupo1/datos_mysql
Caso práctico: backup incremental de tablas InnoDB
● Logical Volume Manager (LVM)– Si da error, ejecutar:# vgchange -a y grupo1
– Creamos un directorio y montamos el volumen lógico# mkdir /ruta/a/directorio# mount -t ext2 /dev/grupo1/datos_mysql
– Parar el servdior, copiar el contenido del directorio de datos al directorio que hemos creado, ajustar los permisos y rearrancar el servidor especificando el nuevo directorio de datos
Caso práctico: backup incremental de tablas InnoDB
● Más información sobre LVM● http://www.tldp.org/HOWTO/LVM-HOWTO/
Caso práctico: backup incremental de tablas InnoDB
● rdiff-backup● Programa de backup incremental de ficheros
– es de uso general, no específico para BBDD● Nos permite
– Copiar solo las modificaciones desde el última backup– Guardar un historial de versiones del directorio– Hacer la copia a través de red
Caso práctico: backup incremental de tablas InnoDB
● rdiff-backup● Sintaxisrdiff-backup [opciones] <origen> <destino>
Caso práctico: backup incremental de tablas InnoDB
● Ejemplo de uso de rdiff-backup$ mkdir origen$ dd if=/dev/zero of=origen/ceros bs=1k count=10000$ rdiff-backup origen copia– La primera vez hace una copia total del origen
● Volvemos a ejecutar$ rdiff-backup origen copia$ du -bsh origen copia– Ocupan lo mismo = la segunda vez no ha copiado nada
Caso práctico: backup incremental de tablas InnoDB
● Ejemplo de uso de rdiff-backup$ cat <<EOF >origen/fichero.txt> fichero de texto> primera version> EOF$ rdiff-backup origen copia$ cat <<EOF >>origen/fichero.txt> modificaciones en el fichero> segunda version> EOF$ rdiff-backup origen copia
Caso práctico: backup incremental de tablas InnoDB
● Ejemplo de uso de rdiff-backup$ rm origen/fichero.txt$ rdiff-backup -r now copia/fichero.txt origen/fichero.txt$ cat origen/fichero.txt
● Listado de versiones anteriores$ rdiff-backup -l copia
● Restaurar una version anterior$ rdiff-backup -r 1B --force copia/fichero.txt origen/fichero.txt$ cat origen/fichero.txt
Caso práctico: backup incremental de tablas InnoDB
● Más información sobre rdiff-backup$ man rdiff-backup
Caso práctico: backup incremental de tablas InnoDB
● Instantáneas LVM● Una copia lógica de un volumen entero en un
instante de tiempo– Mecanismo de copia en escritura = Solo almacena los
cambios que se realicen en el volumen original desde que se creo la instantánea
Caso práctico: backup incremental de tablas InnoDB
● Ejemplo de uso de las instantáneas LVM● Con MySQL corriendo sobre el directorio de datos
en el volumen LVM:– Crear una BBDD o una tabla# lvcreate -L50M -s -n instantanea /dev/grupo1/datos_mysql# mkdir instantanea# mount -t ext2 /dev/grupo1/instantanea ./instantanea
– Borrar la BBDD o la tabla que habíamos creado– Reiniciar el servidor indicandole que use el directorio
instantanea como directorio de datos (ajustar permisos)
– Comprobar que la instantánea no se ha modificado
Caso práctico: backup incremental de tablas InnoDB
● Ejemplo de uso de las instantáneas LVM● Para borrar la instantánea
– Parar el servidor# umount /dev/grupo1/instantanea# lvremove /dev/grupo1/instantanea
Caso práctico: backup incremental de tablas InnoDB
● Notas sobre las instantáneas LVM● Hay que crearlas con espacio suficiente para
almacenar las modificaciones que se realicen en el volumen original desde que fueron creadas– SI SE QUEDA SIN ESPCIO SE CORROMPE
● Mientras existen, puede disminuir el rendimiento de escritura en el volumen original
Caso práctico: backup incremental de tablas InnoDB
● Visión general del procedimiento● [bloquear las tablas a copiar para lectura]● Hacer una instantánea del directorio de datos de
MySQL● Backup incremental con rdiff-backup desde la
instantánea● Eliminar la instantánea
Caso práctico: backup incremental de tablas InnoDB
● Restauración● Si es posible parar el servidor mientras se
restaura– Simplemente restaurar el directorio de datos con rdiff-
backup● En caso contrario
– Hacer una instantánea del directorio de datos– Correr el servidor con la instantánea como directorio
de datos mientras se realiza la restauración– Reiniciar el servidor
Caso práctico: backup incremental de tablas InnoDB
● Bloquear o no bloquear las tablas antes de hacer la instantánea● El bloqueo se haría así:
– mysql> FLUSH TABLES WITH READ LOCK;– Mantener la conexión abierta mientras se hace la
instantánea– mysql> UNLOCK TABLES;
Caso práctico: backup incremental de tablas InnoDB
● Bloquear o no bloquear las tablas● Bloquear
– Garantiza la consistencia de los archivos en el disco = el sistema también es válido para tablas MyISAM
– Se puede tardar bastante en obtener el bloqueo● No bloquear
– No se interfiere con el funcionamiento del servidor– InnoDB = ACID = sabe cómo recuperarse aunque la
instantánea se haya hecho mientras había sentencias ejecutándose (siempre que se haga backup de los archivos de registro)
– La BBDD 'mysql' se puede corromper (tablas MyISAM)