MySQL Enterprise Backup (MEB) ofrece diversas funcionalidades para la gestión de copias de seguridad. A continuación, se detallan varios escenarios de uso.
- 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
- 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
- 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
--databasesy--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.ibdde las tablas InnoDB especificadas, excluyendo archivos.frmy tablas no-InnoDB.--only-innodb-with-frm: Copia los archivos.ibdy.frmde las tablas InnoDB especificadas, excluyendo tablas no-InnoDB.
- 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.
- 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
--incrementaljunto con--incremental-baseo--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-lsnse puede encontrar en el archivobackup_variables.txtdentro del subdirectoriometade la copia de seguridad base.
- 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