Copia de seguridad de MySQL

Esta guía le ayudará a realizar una copia de seguridad completa de su base de datos MySQL sin apagar el sistema. Fue escrita y probada por el equipo de devops de Navixy, por lo que puede confiar en ella como una solución conocida y operativa.

Esta instrucción es válida para MySQL de versiones 8.xx (menor o igual a 8.0.29) y 5.xx. Está escrita, probada y puede aplicarse en los siguientes sistemas operativos:

  • Ubuntu 18.04, 20.04

  • Debian 9, 10, 11

Para otros sistemas operativos y versiones de software, puede aplicarse y adaptarse bajo su propia responsabilidad.

Qué necesita para realizar una copia de seguridad completa de su base de datos MySQL sin apagar el sistema:

  • Conectar un volumen adicional en un disco separado al que se realizará la copia de seguridad.

  • Obtener las credenciales de un usuario MySQL existente o crear un usuario específicamente para la copia de seguridad

  • Todas las operaciones deben realizarse como un usuario con derechos de root, o usando sudo.

A continuación veremos con más detalle los pasos que debe seguir.

Creación de un usuario

Como ejemplo crearemos el usuario llamado bkpuser con los derechos mínimos suficientes para crear una copia de seguridad completa y la contraseña s3cret.

Primero debe acceder a la consola de MySQL con derechos administrativos, por ejemplo:

mysql -uroot -p

Luego, en la consola de MySQL, introduzca los comandos específicos para las distintas versiones de MySQL:

MySQL 5.xx

CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
CREATE USER 'bkpuser'@'%' IDENTIFIED BY 's3cret';
GRANT SELECT, RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
GRANT SELECT, RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'%';
FLUSH PRIVILEGES;

MySQL 8.xx

CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
CREATE USER 'bkpuser'@'%' IDENTIFIED BY 's3cret';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'%';
GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost';
GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'%';
GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'localhost';
GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'%';
FLUSH PRIVILEGES;

Volumen de copia de seguridad

Ahora necesitamos calcular el tamaño del volumen adicional al que se realizará la copia de seguridad.

Para determinar el tamaño del volumen requerido para la copia de seguridad de la base de datos, debe encontrar el tamaño de su base de datos actual y multiplicarlo por 1,5.

Si su base de datos está en la ubicación predeterminada que se establece al instalar el servidor MySQL, debe ejecutar el siguiente comando con derechos de root:

du -sh /var/lib/mysql

Si tiene una ubicación personalizada de la base de datos, debe especificar la ruta de la base de datos como argumento del comando du, es decir:

du -sh /your_path_to_database

Ejemplo de cálculo

En la captura de pantalla podemos ver que el tamaño actual de la base de datos MySQL es de 181 GB. Por lo tanto, el tamaño del volumen para respaldar esta base de datos debe ser al menos 181 * 1.5 = 271,5 GB, redondeado hacia arriba a 272 GB

El cálculo se aplica a una sola copia de la base de datos. Si planea conservar más de una copia de seguridad de la base de datos, recuerde multiplicar el resultado por el número de copias almacenadas.

Software para copia de seguridad

Después de conectar el nuevo volumen y crear un sistema de archivos en él, debe instalar el software necesario para la copia de seguridad de la base de datos. Este software se llama https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html. Considere instalarlo usando paquetes de instalación listos disponibles en los repositorios de Percona XtraBackup.

La instalación se realiza mediante el paquete que contiene la percona-release utilidad de configuración.

Primero, descargue este paquete desde los repositorios de Percona XtraBackup con el siguiente comando:

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

El siguiente paso es ejecutar la instalación del paquete descargado usando la utilidad dpkg. Debe ser root o usar sudo para ejecutar este comando:

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

Ahora configure los repositorios necesarios para el propósito:

percona-release enable-only tools
apt-get update

Excepción para Debian 10

En Debian 10 el paso anterior devuelve un error:

Para corregir este error, debe editar el archivo /etc/apt/sources.list

Abra este archivo en cualquier editor de texto, por ejemplo:

root@debian10:~# nano /etc/apt/sources.list

Agregue la siguiente línea a la lista en la parte superior:

deb http://ftp.de.debian.org/debian buster-backports main

El contenido del archivo se verá algo así:

#
# deb cdrom:[Debian GNU/Linux 10.4.0 _Buster_ - Official amd64 NETINST 20200509-10:25]/ buster main

# deb cdrom:[Debian GNU/Linux 10.4.0 _Buster_ - Official amd64 NETINST 20200509-10:25]/ buster main
deb http://ftp.de.debian.org/debian buster-backports main

deb http://mirror.corbina.net/debian/ buster main
deb-src http://mirror.corbina.net/debian/ buster main

deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main

# buster-updates, anteriormente conocido como 'volatile'
deb http://mirror.corbina.net/debian/ buster-updates main
deb-src http://mirror.corbina.net/debian/ buster-updates main

# Este sistema se instaló usando medios extraíbles pequeños
# (p. ej. netinst, live o CD individual). Las entradas "deb cdrom"
# coincidentes se deshabilitaron al final del proceso de instalación.
# Para obtener información sobre cómo configurar las fuentes de paquetes apt,
# consulte el manual sources.list(5).

Guarde los cambios en el archivo y luego ejecute los siguientes comandos:

apt update
apt install curl/buster-backports
apt --fix-broken install
percona-release enable-only tools
apt-get update

Ahora está listo para instalar la utilidad de copia de seguridad. Para ello, utilice el siguiente comando como root o sudo:

para la versión de MySQL 5.xx:

sudo apt install percona-xtrabackup-24

para versiones de MySQL 8.xx menores o iguales a 8.0.29:

sudo apt install percona-xtrabackup-80

Con esto se completa el procedimiento de instalación de la utilidad Percona XtraBackup.

Creación de la copia de seguridad

Ahora creará una copia de seguridad completa de la base de datos usando Percona XtraBackup.

  • el comando de copia de seguridad se ejecuta en el mismo servidor donde se almacena la base de datos copiada

  • en el ejemplo siguiente el volumen adicional de copia de seguridad está montado en /mnt/backups carpeta

  • se utiliza un usuario pre-creado bkpuser con una contraseña s3cret para conectarse a la base de datos

xtrabackup --user=bkpuser --password=s3cret --backup --target-dir=/mnt/backups/

Después de completar la copia de seguridad, debe preparar la base de datos copiada para su uso. Sin esta operación, la base de datos no será operativa.

xtrabackup --prepare --target-dir=/mnt/backups/

Ahora tiene una copia de la base de datos que está actualizada en el momento de su creación, creada sin detener el servidor y sin aliviar la carga sobre él.

Esta copia de seguridad puede utilizarse para restaurar su base de datos en caso de emergencia.

Última actualización

¿Te fue útil?