copia incremental innodb

Post on 10-Apr-2015

219 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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)

top related