Tabla de contenido
- Introducción
- Prerrequisitos
- Paso 1: crear un usuario del sistema no root
- Paso 2: verifique el motor de almacenamiento
- Paso 3: crear un usuario de base de datos para la copia de seguridad
- Paso 4: Instale Percona XtraBackup
- Paso 5: crear directorios de almacenamiento de respaldo
- Paso 6: cree la primera copia de seguridad completa
- Paso 7: cree las siguientes copias de seguridad incrementales
- Paso 8: prepare los archivos de respaldo para restaurar la base de datos
- Paso 9: Restaurar la base de datos
- Pasos adicionales
Introducción
Percona XtraBackup es un programa gratuito basado en MySQL que se utiliza para realizar copias de seguridad en caliente. También es de código abierto. Con Percona XtraBackup, puede realizar copias de seguridad en caliente de la ejecución de bases de datos MySQL, MariaDB o Percona Server sin detener su servicio de base de datos o hacerlo de solo lectura. Esta es una característica crítica para muchos negocios en línea.
Para las bases de datos que utilizan motores de almacenamiento InnoDB, XtraDB y HailDB, Percona XtraBackup puede realizar copias de seguridad sin bloqueo. Para las bases de datos que usan los motores de almacenamiento MyISAM, Merge y Archive, Percona XtraBackup también puede realizar copias de seguridad pausando brevemente las escrituras al final del procedimiento de copia de seguridad.
En este artículo, le mostraré cómo instalar y usar Percona XtraBackup para realizar copias de seguridad en caliente completas e incrementales en un servidor Vultr basado en la aplicación WordPress One-Click. Realizaremos una copia de seguridad completa y dos copias de seguridad incrementales, y luego restauraremos la base de datos al estado de cada una de las tres copias de seguridad en consecuencia.
Prerrequisitos
Supongo que ha implementado una instancia de servidor One-Click WordPress Vultr desde cero y ha iniciado sesión como root, utilizando SSH.
Paso 1: crear un usuario del sistema no root
Por razones de seguridad, una práctica recomendada es crear otra cuenta de usuario con permisos de root, luego usarla para iniciar sesión y realizar sus operaciones diarias en el sistema. Todavía puede ejecutar casi todos los comandos de superusuario con el sudo
comando.
1) Crear un nuevo usuario. Reemplace sysuser
con su propio nombre de usuario.
useradd sysuser
2) Establezca la contraseña para su nuevo usuario. Reemplace sysuser
con su propio nombre de usuario.
passwd sysuser
3) Otorgue permisos de root a su nuevo usuario.
visudo
Encuentra el párrafo a continuación.
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Agregue una fila directamente debajo de este párrafo, reemplácela sysuser
con su propio nombre de usuario.
sysuser ALL=(ALL) ALL
Guardar y Salir.
:wq
4) Cambie a su nueva cuenta de usuario.
logout
Luego, use las credenciales del nuevo usuario para iniciar sesión desde la ventana de su terminal.
Paso 2: verifique el motor de almacenamiento
Por defecto, el inicio de sesión raíz de MySQL se guarda en el VPS en /root/.my.cnf
. Muestre la contraseña en su terminal con el siguiente comando.
sudo cat /root/.my.cnf
Use la credencial que se muestra en la pantalla para iniciar sesión en la consola MySQL.
mysql -u root -p
En el shell de MySQL, ejecute lo siguiente.
SHOW DATABASES;
Todas las bases de datos MySQL se habrán mostrado en la pantalla. La base de datos denominada like wp5273512
es la base de datos de WordPress que queremos respaldar. En el siguiente comando, reemplace wp5273512
con el suyo propio:
USE wp5273512;
Verifique el motor de almacenamiento para cada mesa:
SHOW TABLE STATUS\G
Encontrará que todas las tablas en su base de datos MySQL de WordPress están utilizando el motor de almacenamiento InnoDB, que es perfecto para realizar copias de seguridad en caliente con Percona XtraBackup.
Para cualquier otra base de datos MySQL que use el motor de almacenamiento MyISAM, aún podemos hacer una copia de seguridad con Percona XtraBackup pausando brevemente las escrituras.
Paso 3: crear un usuario de base de datos para la copia de seguridad
Aún en el shell de MySQL, use los siguientes comandos para crear un usuario de base de datos dedicado para la copia de seguridad. Recuerde reemplazar el nombre de usuario xbuser
y la contraseña de la base de datos xbpasswd
con los suyos:
CREATE USER 'xbuser'@'localhost' IDENTIFIED BY 'xbpasswd';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER, CREATE, INSERT, SELECT ON *.* TO 'xbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Los privilegios otorgados anteriormente son necesarios para la funcionalidad completa de Percona XtraBackup. Puede eliminar algunos de ellos para tener menos funcionalidad y mayor seguridad. Para obtener más detalles, consulte el sitio web oficial de Percona XtraBackup .
Paso 4: Instale Percona XtraBackup
Puede instalar Percona XtraBackup desde el repositorio RPM de Percona con bastante facilidad:
sudo yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
sudo yum install -y percona-xtrabackup
Paso 5: crear directorios de almacenamiento de respaldo
Primero, debe agregar un usuario sysuser
al mysql
grupo. Reemplace sysuser
con su propio nombre de usuario.
sudo gpasswd -a sysuser mysql
Cree un directorio para almacenar copias de seguridad completas.
sudo mkdir -p /dbbackup/full/
Cree otro directorio para almacenar copias de seguridad incrementales.
sudo mkdir -p /dbbackup/inc/
Cambie el propietario de estos directorios a usuario sysuser
y grupo sysuser
.
sudo chown -R sysuser:sysuser /dbbackup
Cierre sesión para poner en práctica estos cambios.
logout
Luego, inicie sesión sysuser
nuevamente.
Paso 6: cree la primera copia de seguridad completa
XtraBackup consiste principalmente en el programa XtraBackup y el innobackupex
script perl. Por lo general, puede usar la innobackupex
secuencia de comandos perl para realizar diversos procedimientos operativos por conveniencia.
Ingrese el siguiente comando para crear la primera copia de seguridad completa. Recuerde reemplazar el nombre de usuario de xbuser
la base de datos , la contraseña del usuario de la base de datos xbpasswd
y el directorio de respaldo completo /dbbackup/full/
por los suyos.
sudo innobackupex --user=xbuser --password=xbpasswd /dbbackup/full/
Con este comando ejecutado correctamente, verá el mensaje de confirmación "innobackupex: completado OK!" en la última línea de la salida.
Todos los archivos recién creados de esta copia de seguridad completa se almacenarán en un directorio con marca de tiempo en /dbbackup/full/
. Por ejemplo, /dbbackup/full/2015-05-22_05-45-54
.
Paso 7: cree las siguientes copias de seguridad incrementales
Ingrese el siguiente comando para crear la primera copia de seguridad incremental. Sustituya las variables en el comando en consecuencia.
sudo innobackupex --user=xbuser --password=xbpasswd --incremental --incremental-basedir=/dbbackup/full/2015-05-22_05-45-54 /dbbackup/inc/
Una vez más, verá "innobackupex: completado OK!" al final de la salida cuando el comando se ejecuta con éxito. Los archivos de copia de seguridad se almacenarán en un directorio con marca de tiempo en /dbbackup/inc/
.
Ingrese el siguiente comando para crear la segunda copia de seguridad incremental. Reemplace las variables en el comando en consecuencia.
sudo innobackupex --user=xbuser --password=xbpasswd --incremental --incremental-basedir=/dbbackup/inc/2015-05-22_05-48-12 /dbbackup/inc/
Una vez que tenga éxito, verá el mensaje "innobackupex: completado ¡OK!" mensaje de nuevo. Verifique /dbbackup/inc/
nuevamente la carpeta para ver los archivos de respaldo.
Paso 8: prepare los archivos de respaldo para restaurar la base de datos
Todos los archivos de respaldo de la base de datos deben prepararse antes de que puedan usarse para restaurar la base de datos.
Nota : Antes de realizar los procedimientos de preparación y restauración, es mejor que guarde una copia de todo el directorio de respaldo (como /dbbackup/
) en otro lugar en caso de que cualquier daño al respaldo de los archivos sea causado por error.
En cada directorio de respaldo, hay un archivo llamado xtrabackup_checkpoints
que contiene el tipo de respaldo y los números de secuencia de registro inicial y final ( from_lsn
y to_lsn
). Puede usar esos números para aclarar su estrategia de restauración de la base de datos. Mira los ejemplos a continuación.
En el xtrabackup_checkpoints
archivo de la primera copia de seguridad completa, tengo:
backup_type = full-backuped
from_lsn = 0
to_lsn = 2932478
En el xtrabackup_checkpoints
archivo de la primera copia de seguridad incremental, tengo:
backup_type =incremental
from_lsn = 2932478
to_lsn = 2970177
En el xtrabackup_checkpoints
archivo de la segunda copia de seguridad incremental, tengo:
backup_type = incremental
from_lsn = 2970177
to_lsn = 3004672
En resumen, debe abordar cada copia de seguridad con el orden creciente de lsn. Si la secuencia lsn está incompleta o desordenada, puede perder datos.
Nota : Los siguientes comandos involucran tres directorios, reemplácelos con los suyos.
Para restaurar la base de datos al estado de la primera copia de seguridad completa, debe preparar los archivos de copia de seguridad con el siguiente comando:
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Para restaurar la base de datos al estado de la primera copia de seguridad incremental, debe preparar los archivos de copia de seguridad con los siguientes comandos:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Para restaurar la base de datos al estado de la segunda copia de seguridad incremental, debe preparar los archivos de copia de seguridad con los siguientes comandos:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-51-32
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Notas :
Para las copias de seguridad incrementales, debe usar la --redo-only
opción en todas las copias de seguridad incrementales, excepto la última. Sin embargo, el uso de esta opción en la última copia de seguridad incremental sigue siendo inofensivo para la consistencia de sus datos; solo causará algún retraso debido a la reversión de la base de datos.
El último comando de cada escenario incremental es opcional pero recomendado, porque acelerará la restauración.
Después de la preparación, los cambios registrados en los archivos de copia de seguridad incrementales se agregarán a los archivos de copia de seguridad completos base preparados, por lo que siempre debe usar los archivos de copia de seguridad completos preparados para restaurar su base de datos, sin importar si elige una copia de seguridad completa o una copia de seguridad incremental.
Paso 9: Restaurar la base de datos
Antes de que pueda restaurar su base de datos, debe detener el servicio de la base de datos.
sudo service mysqld stop
También necesita vaciar el directorio de la base de datos. Puede mover los archivos de la base de datos actual a otro lugar por precaución.
sudo mkdir /currentdb
sudo mv /var/lib/mysql/* /currentdb
Restaura tu base de datos con los archivos preparados de "copia de seguridad completa".
sudo innobackupex --copy-back /dbbackup/full/2015-05-22_05-45-54
Debido a que el procedimiento de restauración modificará el propietario del directorio de la base de datos, debe volver a cambiarlo mysql:mysql
para que sea operativo.
sudo chown -R mysql:mysql /var/lib/mysql
Reinicie el servicio de la base de datos.
sudo service mysqld start
Eso es. En este punto, puede visitar su sitio de WordPress para verificar que el proceso de restauración fue exitoso.