Percona XtraBackup es una utilidad de copia de seguridad de código abierto para MySQL. Admite todas las versiones de MySQL como Percona Server, MariaDB y (Oracle) MySQL. Percona Xtrabackup realiza un Hot Backup para MySQL. Hot Backup significa crear una copia de seguridad de un servidor MySQL mientras se ejecuta sin tiempo de inactividad.
En este tutorial, le mostraré cómo crear una copia de seguridad de la base de datos MySQL con la herramienta OpenSource Percona XtraBackup en Ubuntu 16.04 (Xenial Xerus). Usaré MariaDB como servidor de la base de datos para realizar la copia de seguridad, pero la misma configuración también funcionará para los servidores MySQL.
Requisito previo
- Servidor Ubuntu 16.04 - (Xenial Xerus)
- Servidor MySQL o MariaDB
- Privilegios de raíz
Paso 1:instalar Percona XtraBackup
El primer paso es instalar el último software Percona XtraBackup en nuestro servidor Ubuntu. Inicie sesión en su servidor por SSH (o en la consola):
ssh [email protected]
TYPE YOUR PASSWORD
Percona XtraBackup está disponible en el repositorio de Ubuntu, pero queremos usar la última versión del repositorio de Percona.
Agregue el repositorio de Percona descargando el paquete deb de la web e instálelo con el comando dpkg:
wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb
A continuación, actualice el repositorio e instale Ppercona XtraBackup 2.4 (la última versión en este momento):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
Percona XtraBackup está instalado.
Paso 2:configurar el usuario y el directorio de copia de seguridad
Para realizar la copia de seguridad en caliente, necesitamos crear un nuevo usuario de mysql con privilegios y permisos especiales. En este tutorial, usaré MariaDB 10.0 como servidor de base de datos. Si aún no ha instalado una base de datos compatible con MySQL, puede instalarla con el siguiente comando:
sudo apt-get install mariadb-server mariadb-client
Establezca una contraseña segura para el usuario root con este comando:
mysql_secure_installation
Si MariaDB está instalado, acceda al shell de MariaDB/MySQL como usuario raíz con el comando de cliente mysql:
mysql -u root -p
TYPE MySQL PASSWORD
Cree un nuevo usuario llamado 'bekupuser ' con la contraseña 'micontraseña ' (¡elija una contraseña segura para su servidor!):
CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';
Otorgue al usuario los siguientes privilegios:'RECARGAR, PROCESAR, BLOQUEAR TABLAS, CLIENTE DE REPLICACIÓN'.
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exit
A continuación, cree un nuevo directorio para almacenar los archivos de copia de seguridad de MySQL:
mkdir -p /data/backups/mysql/
Se han creado el nuevo usuario de respaldo y un directorio de respaldo.
Paso 3:realizar una copia de seguridad con Innobackupex
Innobackupex es un contenedor de secuencias de comandos Perl para el programa xtrabackup. Es una versión parcheada del script innobackup proporcionado por Oracle, distribuido con la herramienta InnoDB Backup. Innobackupex proporciona respaldo para una instancia de base de datos MySQL completa, usando xtrabackup en combinación con xbstream y xbcrypt.
En este paso, crearemos y prepararemos una copia de seguridad completa para la instancia de MySQL.
En el paso 2, creamos un nuevo directorio para la copia de seguridad y agregamos un nuevo usuario de copia de seguridad de mysql. Los usaremos ahora para crear una copia de seguridad con el comando innobackupex.
Cree una copia de seguridad de MySQL con innobackupex en el nuevo directorio '/data/backups/my_backup':
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backup
--usuario =usuario con privilegios de copia de seguridad necesarios (paso 2).
--contraseña =contraseña del usuario de respaldo.
--sin marca de tiempo =deshabilitar la creación de un nuevo subdirectorio con marca de tiempo en el directorio raíz de respaldo.
/datos/copias de seguridad/mi_copia de seguridad =directorio para la copia de seguridad, se creará automáticamente durante el proceso de copia de seguridad. Si el directorio existe, recibirá un mensaje de error.
Otra opción:
mkdir -p /data/backups/my_backup2
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2
or
innobackupex --user=bekupuser --password=mypassword /data/backups/
Si no hay un directorio 'my_backup2 ', obtendrá su directorio basado en 'timestamp ' formato.
Resultados:
Después de crear una nueva copia de seguridad, los datos no están listos para una restauración. Hay un paso más para que los datos estén listos para ser restaurados. Necesitamos la 'etapa de preparación' para poder restaurar los datos.
Prepare la copia de seguridad usando innobackupex con la opción --apply-log al directorio de copia de seguridad '/data/backups/my_backup ':
innobackupex --apply-log /data/backups/my_backup
Asegúrese de que el proceso se haya completado sin errores antes de continuar.
Si tiene suficiente memoria y una base de datos grande, puede usar la opción --use-memory=memorynumber para decirle a innobackupex cuánta memoria puede usar:
innobackupex --apply-log --use-memory=4G /data/backups/my_backup
Los datos están listos para ser restaurados ahora. Podemos restaurarlo en el mismo servidor o en otro servidor que esté ejecutando MariaDB.
Paso 4:restaurar la copia de seguridad completa con Innobackupex
En este paso, restauraremos la instancia de MySQL con innobackupex.
Antes de restaurar la instancia de MySQL, debemos detener el proceso de MySQL con el comando systemctl (el proceso de MariaDB se llama mysql):
systemctl stop mysql
Haga una copia de seguridad del antiguo directorio de datos de MySQL:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/
A continuación, restaure la instancia de mysql desde la copia de seguridad completa con innobackupex:
innobackupex --copy-back /data/backups/my_backup
Cuando vea el resultado 'innobackupex:completado OK ', entonces ha restaurado con éxito su instancia de MySQL.
Ahora cambie el propietario del directorio de datos MySQL al usuario mysql y vuelva a iniciar el servicio:
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
La instancia de MySQL se ha restaurado correctamente con percona-xtrabackup.