Estrategias Comunes con MySQL Enterprise Backup

MySQL Enterprise Backup (MEB) ofrece diversas funcionalidades para la gestión de copias de seguridad. A continuación, se detallan varios escenarios de uso.

  1. Copias de Seguridad en Formato Imagen Este método genera un archivo de imagen compacto que representa el estado de la base de datos.

Realizar una Copia de Seguridad en Imagen:

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --backup-image=/images/backup_20161008.mbi --backup-dir=/tmp/backup-temp backup-to-image

El parámetro --backup-dir especifica un directorio para archivos temporales que pueden ser eliminados posteriormente. El archivo de imagen generado (.mbi) es el que se debe conservar. El directorio /images debe existir previamente.

Restaurar desde una Imagen: Para restaurar, primero se debe descomprimir la imagen en un directorio de trabajo.

./mysqlbackup --backup-image=/images/backup_20161008.mbi --backup-dir=/backup/restore-data image-to-backup-dir

Aplicar Registros (Redo Logs):

./mysqlbackup --backup-dir=/backup/restore-data apply-log

Restauración Final:

./mysqlbackup --defaults-file=/backup/restore-data/server-my.cnf --backup-dir=/backup/restore-data/ copy-back

  1. Copias de Seguridad Comprimidas Permite reducir el tamaño de las copias de seguridad mediante compresión.

Realizar una Copia de Seguridad Comprimida:

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --backup-dir=/backup/compressed --compress --compress-level=9 backup

Aplicar Registros (Descomprimiendo):

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --backup-dir=/backup/compressed --uncompress apply-log

Restauración:

./mysqlbackup --defaults-file=/backup/compressed/server-my.cnf --backup-dir=/backup/compressed/ copy-back

  1. Copias de Seguridad Basadas en Bases de Datos La gestión de copias de seguridad para bases de datos específicas requiere comprender los parámetros --databases y --include.

Consideraciones sobre --databases: El parámetro --databases se utiliza principalmente para filtrar tablas no-InnoDB. Su comportamiento puede ser inesperado si no se usa correctamente, especialmente si se omiten bases de datos críticas como mysql. Ejemplo para incluir bases de datos específicas (incluyendo tablas no-InnoDB):

./mysqlbackup --databases='database1.table1 database2' --backup-dir=/backup/db-specific backup

Copias de Seguridad de Tablas InnoDB con --include: El parámetro --include utiliza expresiones regulares para seleccionar tablas InnoDB basadas en archivos de tablespace por tabla. Ejemplo para resapldar solo las bases de datos db1 y test:

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --backup-dir=/backup/innodb-specific --include='^(db1|test)\..*' backup

Un inconveniente de este método es que puede respaldar archivos .frm de tablas no incluidas, lo que podría causar errores de restauración si los archivos .ibd correspondientes no existen. Puede ser necesario eliminar manualmente los archivos .frm de tablas no deseadas después de la copia de seguridad.

Opciones adicionales:

  • --only-innodb: Copia solo los archivos .ibd de las tablas InnoDB especificadas, excluyendo archivos .frm y tablas no-InnoDB.
  • --only-innodb-with-frm: Copia los archivos .ibd y .frm de las tablas InnoDB especificadas, excluyendo tablas no-InnoDB.
  1. Copias de Seguridad Parciales Utiilzando Tablespaces Transferibles Esta técnica permite respaldar y restaurar tablas individuales o bases de datos utilizando la funcionalidad de tablespaces transferibles.

Realizar Copia de Seguridad Parcial (Ejemplo: tabla db1.t1):

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --backup-dir=/backup/tts --include='db1\.t1' --use-tts backup

Aplicar Registros:

./mysqlbackup --backup-dir=/backup/tts apply-log

Restauración: Al restaurar, puede surgir un error si los permisos de los archivos .ibd y .frm no son correctos (p.ej., si pertenecen a root en lugar de al usuario mysql). Es necesario ajustar los permisos antes de importar el tablespace.

# Corregir permisos (ejemplo):
# chown mysql.mysql db1/t1.*
# Importar manualmente el tablespace en el cliente MySQL:
# ALTER TABLE db1.t1 IMPORT TABLESPACE;

La restauración con tablespaces transferibles no requiere que el servidor de destino esté caído y puede realizarse en cualquier instancia de MySQL en línea, siempre que las tablas a importar no existan previamente.

  1. Copias de Seguridad Incrementales MEB soporta copias de seguridad incrementales para capturar solo los cambios desde el último respaldo.

Copia de Seguridad Completa (Base):

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --backup-dir=/backup/full backup

Primera Copia de Seguridad Incremental:

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --incremental --incremental-backup-dir=/increment_backup_1 --incremental-base=dir:/backup backup

Segunda Copia de Seguridad Incremental:

./mysqlbackup --socket=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/data/mysql.sock --incremental --incremental-backup-dir=/increment_backup_2 --incremental-base=dir:/increment_backup_1 backup

Restauración de Copias Incrementales: Primero, aplicar el log de la copia completa:

./mysqlbackup --backup-dir=/backup apply-log

Luego, aplicar cada copia incremental secuencialmente:

./mysqlbackup --incremental-backup-dir=/increment_backup_1 --backup-dir=/backup apply-incremental-backup
./mysqlbackup --incremental-backup-dir=/increment_backup_2 --backup-dir=/backup apply-incremental-backup

Finalmente, realizar la restauración completa:

./mysqlbackup --defaults-file=/backup/server-my.cnf --backup-dir=/backup copy-back

Tipos de Copias Incrementales:

  • Basada en Archivos de Datos: Utiliza --incremental junto con --incremental-base o --start-lsn.
  • Basada en Archivos Redo: Utiliza --incremental-with-redo-log-only. Requiere que los redo logs posteriores al LSN especificado no hayan sido sobrescritos. El valor para --start-lsn se puede encontrar en el archivo backup_variables.txt dentro del subdirectorio meta de la copia de seguridad base.
  1. Validación de Imágenes Verifica la integridad de un archivo de imagen de copia de seguridad.
./mysqlbackup --backup-dir=/images --backup-image=backup_2016_09_27_image validate

Etiquetas: MySQL meb backup incremental tablespace

Publicado el 10-22 00:01