LINUX

Percona Xtrabackup: cómo realizar copias de seguridad en caliente de MySQL

respalda mysql con percona xtrabackup

Al realizar una copia de seguridad de una base de datos, generalmente no desea detener la base de datos. Porque si lo detiene, su aplicación dejará de estar disponible. Pero si no lo detiene, su copia de seguridad podría terminar siendo inconsistente e inútil, debido a que las transacciones a medio hacer están respaldadas. Percona ha ideado una buena solución para la copia de seguridad incremental de la ejecución de una instancia de MySQL. Su solución de copia de seguridad en caliente se llama Percona XtraBackup y se puede utilizar para realizar copias de seguridad de MySQL, MariaDB y PerconaServer. Sin embargo, necesito ejecutar el motor de almacenamiento InnoDB. En este artículo, mostraremos cómo instalar MySQL (versión actual 5.7) en Ubuntu 16.o4 y usar XtraBackup para hacer una copia de seguridad mientras se ejecuta. Para restaurar la copia de seguridad, se debe detener el servidor de la base de datos y evacuar el directorio de datos.

Instalación de MySQL

MySQL está presente en los repositorios de Ubuntu y podemos instalarlo con un simple comando apt:

sudo apt install mysql-server mysql-client

Le pedirá la contraseña de root del entorno ncurses. Ingrese y complete el proceso de instalación.

Una vez hecho esto, necesitamos ejecutar un script para asegurar la instalación de MySQL.

sudo mysql_secure_installation

Aquí puede cambiar la contraseña que ingresó anteriormente, puede deshabilitar el inicio de sesión remoto y puede eliminar la base de datos de prueba.

También necesitamos agregar su usuario al grupo mysql, este comando lo hará

sudo gpasswd -a ubuntu mysql

El nombre de usuario es ubuntu, lo cambia por el suyo. Para comprobar si la instalación se ha realizado correctamente, puede intentar iniciar sesión

mysql -u root -p

A continuación, creemos una base de datos con la que trabajaremos más tarde.

CREATE DATABASE dbtobackup;

Vamos a crear usuarios y otorgar privilegios a esta base de datos.

GRANT ALL ON dbtobackup.* TO 'miki' IDENTIFIED BY 'password';

Necesitamos llenar la base de datos, así que lo primero que creamos es una tabla como esta:

USE dbtobackup;

CREATE TABLE linoxide_staff (id INT, name VARCHAR(12), nickname VARCHAR(28));

Luego ponemos los datos en la tabla.

INSERT INTO linoxide_staff (id,name,nickname) VALUES(1,"Bobin","Bobby");

INSERT INTO linoxide_staff (id,name,nickname) VALUES(2,"Mihajlo","Miki");

Y mira lo que creamos

mysql> SELECT * FROM linoxide_staff;

Tabla a respaldar con Percona Xtrabackup

A continuación, para que la copia de seguridad funcione, debemos otorgar a este usuario algunos privilegios también para otras bases de datos que podríamos crear más adelante.

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'miki'@'localhost';

También necesitamos otorgar proceso:

GRANT SELECT, PROCESS ON *.* TO 'miki'@'localhost';

A continuación, podemos salir de mysql y pasar a la configuración de Percona xtrabackup.

Uso de Percona Xtrabackup para hacer una copia de seguridad de su base de datos

Vamos a obtener el archivo deb para el repositorio de percona

wget https://www.percona.com/redir/downloads/percona-release/ubuntu/latest/percona-release_0.1-4.xenial_all.deb

A continuación lo instalaremos

sudo dpkg -i percona-release_0.1-4.xenial_all.deb

Actualizar lista de fuentes:

sudo apt update

E instalar Percona xtrabackup

sudo apt install percona-xtrabackup-24

Tenga en cuenta que la versión anterior a la 2.4 no funcionará.

Necesitamos establecer permisos para el directorio de datos de MySQL, que es donde se almacenan las bases de datos

sudo chown -R mysql: /var/lib/mysql
sudo find /var/lib/mysql -type d -exec chmod 775 "{}" ;

Y necesitamos crear un directorio de respaldo, ahí es donde almacenaremos los respaldos

sudo mkdir -p /data/backups
sudo chown -R ubuntu: /data

A continuación, podemos hacer una copia de seguridad de la base de datos:

innobackupex --user=miki --password=password --no-timestamp /data/backups/first_backup

Este comando le dará un resultado bastante detallado y cuando finalice la ejecución, debería obtener algo como esto:

161109 17:04:51 [00] ...done
xtrabackup: Transaction log of lsn (2540757) to (2540766) was copied.
161109 17:04:51 completed OK!

Para que su copia de seguridad sea siempre coherente y esté lista para la restauración, deberá aplicarle el registro de transacciones. Eso ayudará a mantener la coherencia y a evitar la corrupción.

innobackupex --apply-log /data/backups/

¡Este comando también debería terminar con completado OK! salida si se completa con éxito.

Restaurando la base de datos desde Xtrabackup

Para restaurar la copia de seguridad, debe detener el servidor de la base de datos y vaciar el directorio de datos.

sudo systemctl stop mysql.service

Después de que el servicio se haya detenido, lo que vamos a hacer es una paradoja. Realizamos una copia de seguridad del directorio de datos en caso de que la copia de seguridad no se realice correctamente. No puede omitir este proceso, ya que de cualquier manera el directorio de datos debe estar vacío. Entonces, si no desea hacer una copia de seguridad, simplemente elimínela. Nos moveremos / respaldaremos ahora:

mkdir /tmp/mysql
mv /var/lib/mysql/* /tmp/mysql/

La copia de seguridad se restaura con el comando copy-back

innobackupex --copy-back /data/backups/first_backup

Cuando se restaura la copia de seguridad, debemos cambiar los permisos a una nueva copia del directorio lib

sudo chown -R mysql: /var/lib/mysql

A continuación, podemos iniciar de nuevo el servidor de la base de datos.

 sudo systemctl start mysql.service

Conclusión

Hemos realizado con éxito una copia de seguridad y restauración de MySQL en Ubuntu usando Percona Xtrabackup. Usando este artículo como un punto de cadena, es posible que desee automatizar este proceso con un script bash. Otra guía útil que publicamos recientemente es una sobre lsyncd. Puede usar lysncd para sincronizar su directorio de copia de seguridad (/ datos / copias de seguridad en este caso) con el servidor remoto y de esa manera proteger su base de datos en caso de que su servidor se vuelva totalmente inaccesible por alguna razón. Esto sería todo por el artículo de hoy, gracias por leer y espero que esto le ayude a proteger sus datos.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar