copia incremental innodb

22
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

Upload: elias-alonso-gomez-cornejo

Post on 10-Apr-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Copia Incremental InnoDB

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

Page 2: Copia Incremental InnoDB

Caso práctico: backup incremental de tablas InnoDB

● Prerequisitos● LVM2

$ sudo apt-get install lvm2● rdiff-backup

$ sudo apt-get install rdiff-backup

Page 3: Copia Incremental InnoDB

Caso práctico: backup incremental de tablas InnoDB

● Modificaciones de la BBDD● Migrar el archivo de datos a un volumen LVM

Page 4: Copia Incremental InnoDB

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

Page 5: Copia Incremental InnoDB

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>

Page 6: Copia Incremental InnoDB

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

Page 7: Copia Incremental InnoDB

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

Page 8: Copia Incremental InnoDB

Caso práctico: backup incremental de tablas InnoDB

● Más información sobre LVM● http://www.tldp.org/HOWTO/LVM-HOWTO/

Page 9: Copia Incremental InnoDB

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

Page 10: Copia Incremental InnoDB

Caso práctico: backup incremental de tablas InnoDB

● rdiff-backup● Sintaxisrdiff-backup [opciones] <origen> <destino>

Page 11: Copia Incremental InnoDB

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

Page 12: Copia Incremental InnoDB

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

Page 13: Copia Incremental InnoDB

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

Page 14: Copia Incremental InnoDB

Caso práctico: backup incremental de tablas InnoDB

● Más información sobre rdiff-backup$ man rdiff-backup

Page 15: Copia Incremental InnoDB

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

Page 16: Copia Incremental InnoDB

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

Page 17: Copia Incremental InnoDB

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

Page 18: Copia Incremental InnoDB

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

Page 19: Copia Incremental InnoDB

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

Page 20: Copia Incremental InnoDB

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

Page 21: Copia Incremental InnoDB

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;

Page 22: Copia Incremental InnoDB

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)