Crear una copia de seguridad de MySQL usando la utilidad XtraBackup

Percona XtraBackup es una utilidad para copias de seguridad de bases de datos en caliente MySQL.

Al crear una copia de seguridad de datos, no se bloquea ninguna tabla y su sistema continúa funcionando sin restricciones.

XtraBackup 2.4 Puede crear copias de seguridad de tablas. InnoDBXtraDB и MyISAM en servidores MySQL 5.11, 5.5, 5.6 y 5.7, y también en el servidor. Percona para MySQL с XtraDB.

Trabajar con mysql 8.x se debe utilizar la versión XtraBackup 8.x. Este artículo sólo hablará de XtraBackup 2.4.

La principal ventaja XtraCopia de seguridad es que esta utilidad es adecuada tanto para crear copias de seguridad de servidores muy cargados como para sistemas con un número reducido de transacciones.

Si el tamaño total de sus bases de datos MySQL es significativo (decenas de gigabytes), entonces la utilidad estándar mysqldump no le permitirá crear rápidamente una copia de seguridad y restaurar el volcado llevará mucho tiempo.

Instalación

Instalación XtraCopia de seguridad del repositorio apto Perconá.

Ejecute los siguientes comandos secuencialmente:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. Después de la instalación, ejecute el comando xtrabackup -v. Desde entonces, es importante asegurarse de que la utilidad funcione correctamente en el servidor. Como resultado, se mostrará algo como esto en la pantalla:

xtrabackup: argumentos de servidor reconocidos: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup versión 2.4.20 basado en el servidor MySQL 5.7.26 Linux (x8664) (id de revisión: c8b4056)

Crear una copia de seguridad de MySQL usando la utilidad XtraBackup

Derechos de acceso, permisos y privilegios 

XtraBackup debería poder:

  • Conéctese a su servidor MySQL.

  • Tener derechos de acceso al directorio. directorio de datos

  • Al crear una copia de seguridad, tenga derechos de escritura en el parámetro especificado destino-dir catalogar.

¿Qué es el directorio de datos?

directorio de datos es el directorio donde se encuentra el servidor de base de datos MySQL almacena datos. Todas las bases de datos, todas las tablas están ahí. En la mayoría de las distribuciones de Linux, el directorio predeterminado es / var / lib / mysql.

¿Qué es el directorio directorio de destino?

destino-dir - Este es el directorio donde se guardará la copia de seguridad.

El usuario de la base de datos necesita los siguientes derechos de acceso a las tablas y bases de datos de las que se realizará la copia de seguridad:

  • RECARGAR Y BLOQUEAR MESAS

  • CLIENTE DE REPLICACIÓN

  • CREAR ESPACIO DE TABLA

  • NUESTRO PROCESO

  • SÚPER

  • CREAR

  • INSERT

  • SELECCIONAR

Configuración 

Configuración XtraCopia de seguridad hecho usando opciones que se comportan igual que las opciones estándar de MySQL.

¿Qué significa?

Los parámetros de configuración se pueden especificar en la línea de comando o en el archivo de configuración del DBMS, por ejemplo en /etc/my.cnf.

La utilidad XtraBackup lee particiones después del inicio [Mysqld] и [copia de seguridad adicional] de los archivos de configuración de MySQL. Esto se hace para que la utilidad pueda usar la configuración de su DBMS sin tener que especificar manualmente los parámetros durante cada copia de seguridad.

Por ejemplo, el valor directorio de datos y algunos parametros InnoDB Obtenemos XtraBackup desde la configuración de su DBMS.

Si para que XtraBackup funcione desea anular los parámetros que están en la sección [Mysqld], luego simplemente especifíquelos en el archivo de configuración en la sección [copia de seguridad adicional]. Como se leerán más tarde, su prioridad será mayor.

No es necesario agregar ningún parámetro a my.cnf. Todos los parámetros requeridos se pueden especificar en la línea de comando. Por lo general, lo único que se puede colocar cómodamente en la sección [copia de seguridad adicional] su my.cnf es un parámetro dir_objetivo, que de forma predeterminada especifica el directorio donde se colocarán las copias de seguridad. Pero esto es opcional.

Un ejemplo de cómo especificar la ruta al directorio con una copia de seguridad en my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

secuencia de comandos de copia de seguridad

Puede utilizar el siguiente script para crear una copia de seguridad:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

¿Qué sucede durante la ejecución del script?

En primer lugar limpiamos (eliminamos) el directorio en el que guardaremos la copia de seguridad:

rm -rf /mysql/backup.

Luego, usando la utilidad XtraCopia de seguridad crear una copia de seguridad y guardarla en /mysql/copia de seguridad/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Anteriormente, creamos un usuario en MySQL. xtrabackup con los privilegios requeridos. Usando el parámetro target-dir especificamos el directorio donde se debe guardar la copia de seguridad.

Un punto importante!

Tenga en cuenta la línea del guión:

xtrabackup --prepare --target-dir=/mysql/backup

Datos del catálogo /mysql/copia de seguridad no son consistentes hasta que estén cocidos. 

El hecho es que podrían ocurrir cambios al copiar archivos. Operación xtrabackup --prepare --target-dir=/mysql/backup hace que los datos de la copia de seguridad sean perfectamente consistentes a lo largo del tiempo.

Puede realizar la operación de preparación de datos en cualquier máquina. No es necesario hacer esto en el servidor donde se encuentra el DBMS de origen. Puede copiar la copia de seguridad al servidor de destino y prepararla allí.

Lo último que hacemos es crear un archivo en el que colocamos nuestra copia de seguridad:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

Restaurar una copia de seguridad 

Antes de poder restaurar una copia de seguridad en el servidor de destino, los datos deben pasar por una fase de preparación. Consulte arriba para saber cómo hacer esto.

El proceso de recuperación de datos es muy sencillo. Debe extraer la copia de seguridad del archivo y reemplazar los datos en directorio de datos.

¿Cómo reemplazar datos en datadir?

Consideremos dos opciones.

1 opción

Usa la utilidad XtraCopia de seguridad. Necesitas especificar una opción --copiar de nuevo

El siguiente comando transferirá la copia de seguridad a directorio de datos servidor de destino:

xtrabackup --copy-back --target-dir=/mysql/backup

2 opción

Puedes hacerlo de otra manera, prescinde de la utilidad. XtraCopia de seguridad.

Todo lo que necesitas hacer es copiar la copia de seguridad a directorio de datos. Puedes hacer esto con cp o rsync.

Es importante comprender que el procedimiento para restaurar una copia de seguridad se reduce simplemente a reemplazar el contenido del directorio. directorio de datos.

Antes de comenzar a restaurar una copia de seguridad en el servidor de destino, debe:

  • Detenga el servidor MySQL.

  • Carpeta vacía directorio de datos o mover su contenido a otra ubicación. Catalogar directorio de datos debe estar vacío.

Después de completar la transferencia de datos a directorio de datos Se puede iniciar el servidor MySQL.

materiales utilizados

Documentación oficial Percona XtraCopia de seguridad.

Fuente: habr.com

Añadir un comentario