Plugin MySQL Bacula Enterprise – Guía Rápida

Esta guía rápida presenta técnicas y estrategias para la copia de seguridad de MySQL y de MariaDB con MySQL Bacula Enterprise Plugin.

Todas las versiones de MySQL 4.0.x y superior son compatibles, y también los equivalentes de MariaDB deben ser.

El plug-in es capaz de realizar copias de seguridad incrementales y diferenciales de las bases de datos y también salvará los archivos de registro generados durante la copia de seguridad para la recuperación del PITR.

El complemento soporta las técnicas de copia de seguridad de flujo de Dump y flujo Binario.

El flujo Dump permite la edición y restauración de sólo algunos objetos de base de datos, como tablas y esquemas.

El flujo Binario no permite la restauración de un solo objeto granular, pero las operaciones de copia de seguridad y restauración son más rápidas.

Instalación

El plugin MySQL está disponible como un paquete Bacula Enterprise para todas las plataformas soportadas.

Usted necesita instalar este plugin en el cliente donde reside el servidor MySQL. El paquete del cliente Bacula, generalmente «bacula-enterprise-client» también debe ser instalado, herramientas como mysqldump y mysql deben estar disponibles.

Al utilizar el modo Binario, debe instalar la herramienta xtrabackup y asegurarse de que los paquetes Innobackupex y xtrabackup estén instalados correctamente y disponibles en el PATH. RPMs y Debs están disponibles en el sitio de Percona – https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/apt_repo.html.

rpm -ivh bacula-enterprise-mysql-plugin-8.10.1-1.el7.x86_64.rpm

Configuración MySQL

Para utilizar la función de Recuperación de punto en tiempo de MySQL, la función log_bin debe estar activada, lo que normalmente ya ocurre de forma predeterminada (la variable de sistema log_bin se establece en ON).

Si no está, puede habilitar la ruta de acceso al archivo de registro en /etc/my.cnf. Por ejemplo, log_bin=/var/lib/mysql/mysql.index.

Otra excepción es si utiliza mysqld para inicializar el directorio de datos manualmente invocándolo con la opción –initialize o –initialize-inseure, cuando el registro binario está deshabilitado de forma predeterminada. Es posible habilitar el registro binario, en estos casos, especificando la opción –log-bin para el comando de arranque de MySQL.

El procedimiento puede diferir entre las versiones principales de MySQL, por lo que le aconsejamos que lea la documentación correspondiente a su versión.

Configuración de FileSet y Plugin en el método Dump

Como se muestra en la Figura 1, la creación de FileSet se puede ejecutar usando el bweb (Edit Plugin – con todas las opciones disponibles).

Plugin MySQL Bacula Enterprise – Guía Rápida 1

Figura 1. Pantalla de Configuración del Fileset del bweb, Edición de Plugin de MySQL en modo Dump

O texto, como en la siguiente plantilla de configuración mínima para todas las copias de seguridad de las bases de datos encontradas:

FileSet {
  Name = FS_mysql_dump
  Include {
    Options {
      Signature = MD5
    }
  Plugin = mysql
  }
}

Puede utilizar el nombre de la base de datos con un patrón de secuencia o utilizar varias líneas para seleccionar sólo algunas bases de datos para la copia de seguridad. Por ejemplo:

Plugin = "mysql: database=hfaria"
Plugin = "mysql: database=guru"

En este último ejemplo, un usuario específico de MySQL se utiliza para acceder a MySQL, y una tabla se omite desde la copia de seguridad:

Plugin = "mysql: user=hfaria dump_opt="--ignore-table=db_name.tbl_name""

Como se muestra en la Tabla 1, estas son todas las opciones soportadas por el método Dump:

Opción Default Descripción Ejemplo
dump_opt Esta cadena se pasará al comando mysqldump dump_opt=»-X»
unix_user mysql Usuario del sistema operativo que se utiliza para comandos de MySQL user=hfaria
service Nombre del servidor MySQL service=main
mycnf_dir Ruta donde se almacena el archivo my.cnf de MySQL my_cnf=/tmp
use_sudo Utilice sudo en lugar de ejecutar comandos de MySQL (cuando no es root) use_sudo
database Se realizará una copia de seguridad en las bases de datos correspondientes a esa cadena database=prod*
all_databases Generará un solo volcado de todas las bases de datos
bin_dir Ubicación de los binarios de MySQL bin_dir=/usr/bin/
user root Super usuario de MySQL user=hfaria
password Contraseña del usuario de MySQL password=xxx
logbin_dir Directorio mysqld log_bin
encoding utf8 Conjunto de caracteres utilizado para el Dump de datos encoding=utf8

Tabla 1. Opciones del método de volcado de plug-in de MySQL

Configuración de FileSet y Plugin en el método binario

Conforme mostrado na Figura 2, a criação do FileSet pode ser executada usando o bweb (Edit Plugin – com todas as opções disponíveis).

Plugin MySQL Bacula Enterprise – Guía Rápida 2

Figura 2. Pantalla de Configuración del Fileset del bweb, Edición de Plugin de MySQL en el modo Binario

O texto, como en la siguiente plantilla de configuración mínima para todas las copias de seguridad de las bases de datos encontradas:

FileSet {
  Name = FS_mysql_dump
  Include {
    Options {
      Signature = MD5
    }
  Plugin = "mysql: mode=binary"
}

Como se muestra en la Tabla 2, el complemento admite las siguientes opciones en modo binario:

Opción Default Descripción Ejemplo
mode=binary dump Necesita habilitar copia de seguridad Binaria
unix_user mysql Usuario MySQL del sistema operativo unix_user=mysql
service main Información del servidor MySQL service=main
user root Super usuario de MySQL user=hfaria
password Contraseña de usuario MySQL password=xxx
bin_dir Ubicación de binarios de MySQL bin_dir=/usr/bin
bin_format xbstream Formato binario (tar o xbstream) bin_format=tar
config_file /etc/mysql/my.cnf Ruta al archivo de configuración my.cnf de mysqld /etc/mysql/my.cnf

Tabela 2. Opções do Método Binário do Plug-in do MySQL

Opciones de Conexión Especial de MySQL

Si su instalación de MySQL está utilizando opciones específicas de conexión como conexión TCP, puerto no estándar, o para evitar que el Bacula tenga la contraseña de usuario de la base de datos en las opciones de conexión del plug-in, puede crear un archivo. my.cnf que se lee por las opciones especificadas de plug-in mycnf_dir. Por ejemplo:

# cat /opt/bacula/etc/.my.cnf
[client]
user=admin
password=admin1

Creación de Jobs de Copia de Seguridad

Cree una nueva tarea de copia de seguridad utilizando el cliente de máquina MySQL y el nuevo FileSet con las opciones de plug-in deseadas. Por ejemplo:

Job {
  Name = "MySQL-BIN"
  Client = laptop1-fd
  FileSet = FS_mysql
  ...
}

Prueba de Job e FileSet

Puede utilizar el comando de código para comprobar que el plugin de MySQL está bien configurado. Debe enumerar los Dumps de base de datos que Bacula haría copia de seguridad en el caso de una ejecución de trabajo.

* estimate listing job=my-test

Tenga en cuenta que, con el modo de Dump, Bacula no puede calcular el tamaño del volcado a las bases de datos, por lo que mostrará el tamaño de la base de datos.

Restauración del Método Dump

Usando la selección del archivo bweb Web Restore, BAT o bconsole restore file, es posible seleccionar diferentes elementos granulares del servicio MySQL y de los bancos de datos para restaurar. De la siguiente manera:

  • createdb.sql – Script de creación de base de datos
  • schema.sql – Script de creación del esquema de base de datos
  • data.sql – Datos de la base de datos
  • grants.sql – Todas las listas de usuarios de la base de datos asociada
  • global-grants.sql – Usuarios globales de MySQL, contraseña y lista de opciones.
  • settings.txt – Variables actuales globales para el servidor MySQL
  • my.cnf – Configuración del servidor MySQL

Restauración de una Base en el Método de Dump

Como se muestra en la Figura 3, para restaurar una única base de datos con el complemento Bacula Enterprise MySQL, es necesario seleccionar el directorio del banco en el comando restore, la selección debe contener el archivo data (data.sql) y el script de creación del banco de datos (createdb. sql).

Plugin MySQL Bacula Enterprise – Guía Rápida 3

Figura 3. Restauración de la Base de Datos del Método MySQL Dump

Cuando se selecciona el directorio de base de datos, puede utilizar el parámetro where para restaurar la base de datos a una nueva base. Si establece que una sola palabra que contiene sólo a..z, 0-9 ,. y _, el Bacula creará la base de datos especificada y restaurará los datos en él.

Si el parámetro donde es un directorio (que contiene /), el Bacula restaurará todos los archivos a este directorio. Al hacer esto, puede utilizar mysql directamente y restaurar a sí mismo.

Restauración de Usuarios y Funciones de MySQL

Para restaurar las funciones y los usuarios a su servidor MySQL, simplemente seleccione el archivo global-grants.sql ubicado en /@MYSQL/<service>/global-grants.sql.

Entonces, usando where = / o where = el plugin cargar este archivo SQL en su base de datos. Si ya existen algunas funciones, los errores se imprimir en el registro de tareas. Tenga en cuenta que puede restaurar el archivo global-grants.sql a un directorio local, editar el archivo y cargarlo con mysql para restaurar sólo una selección.

Restauración PITR Método de Dump

Para restaurar datos del registro binario, debe conocer el nombre y la ubicación de los archivos de registro binarios actuales cuando se realizó la copia de seguridad. Esta información está disponible en la línea «CHANGE MASTER» en la parte superior del archivo data.sql.

-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE=’sql-bin.000004’, MASTER_LOG_POS=2083;

Esta información también se imprime en el informe de tareas Bacula al restaurar un Dump directamente en una nueva base de datos mediante el parámetro where = nuevo_banco.

...
Found MASTER_LOG position sql-bin.000004:2083 for "database5276"
...

Después de tener esa información y todos los archivos de registro generados entre la copia de seguridad completa y el momento en que desea restaurar, debe utilizar el programa mysqlbinlog.

# mysqlbinlog -j 2083 sql-bin.000004 sql-bin.000005...

Este comando generará una secuencia de comandos SQL que puede cargar en la base de datos restaurada para ejecutar el proceso de recuperación. Es posible que desee detener el proceso de recuperación en medio de un archivo de registro, por lo que mysqlbinlog proporciona varias opciones, como –stop-datetime, para controlar este comportamiento. Consulte la documentación de mysqlbinlog para todos los parámetros – http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html.

Como la salida del programa mysqlbinlog es una secuencia de comandos SQL, también puede editar la secuencia de comandos para satisfacer sus necesidades. Por ejemplo, si la base de datos tiene un nuevo nombre, debe editar la secuencia de comandos SQL para cambiar las referencias de la base de datos.

# mysqlbinlog -j 2083 mysql-bin.000004 ... | 
sed ’s/use ‘orgname‘/use ‘newname‘/’ | 
mysql -u root newname

Para más información sobre PITR con MySQL, consulte la documentación de MySQL: http://dev.mysql.com/doc/refman/5.1/en/point-in-time-recovery.html

Restauración de Tabla Única

Para restaurar un solo elemento, como una tabla, es necesario restaurar el archivo de volcado a un directorio y utilizar el comando mysql. Por ejemplo:

$ sed -n -e ’/Table structure for table .mytable.$/,/Table structure for table/p’ data.sql

Este comando sed extraerá la estructura de la tabla, el índice y los datos del dump.

Restauración Completa del Servidor MySQL

Para restaurar todas las bases de datos y la configuración del servidor, basta con seleccionar todos los archivos ubicados en /@MYSQL/<service>, use replace = always y where = /.

Restauración del método binario

Restauración Completa del Servidor

Después de restaurar el contenido de la copia de seguridad con Bacula, los archivos que utilizan el formato tar deben ser extraídos con la opción tar -i. Con el formato xbstream, puede extraer datos con la opción -x.

% cd @MYSQL/main
% xbstream -x < all-databases.xbstream
% ls
all-databases.xbstream     ibdata1.delta           performance_schema
xtrabackup_logfile         ibdata1.meta            testdb
backup-my.cnf              xtrabackup_checkpoints  mysql
xtrabackup_binary          xtrabackup_binlog_info

Cuando los archivos están descomprimidos, puede preparar la copia de seguridad con la opción –apply-log de la herramienta innobackupex. Si planea aplicar copias de seguridad incrementales, también debe utilizar la opción de sólo lectura.

% innobackupex --apply-log --redo-only $PWD
...
120604 02:50:02 innobackupex: completed OK!

Cada incremental se debe extraer en un directorio específico, por lo que deben aplicarse a los datos base.

% mkdir incr1
% cd incr1
% xbstream -x < ../all-databases-1220202.xbstream
% cd ..
% innobackupex --apply-log --redo-only --incremental-dir=incr1 $PWD
...
120604 02:51:02 innobackupex: completed OK!
% mkdir incr2
% cd incr2
% xbstream -x < ../all-databases-1320402.xbstream
% cd ..
% innobackupex --apply-log --redo-only --incremental-dir=incr2 $PWD
...
120604 02:52:02 innobackupex: completed OK!

Cuando los archivos están descomprimidos, puede preparar la copia de seguridad con la opción –apply-log de la herramienta Innobackupex:

% innobackupex --apply-log $PWD
...
120604 02:51:02 innobackupex: completed OK!

Ahora los archivos en el directorio local están listos para ser utilizados por el servidor. La opción –copy-back copiará los datos preparados de nuevo a su ubicación original, según lo definido por el datad en su my.cnf. Tenga en cuenta que puede utilizar –defaults-file = /camino/para/my.cnf para especificar el archivo de configuración my.cnf.

% innobackupex --copy-back $PWD
...
120604 02:58:44 innobackupex: completed OK!

Debe comprobar los permisos del archivo después de copiar los datos de nuevo. Usted puede necesitar fijar con algo como:

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

Ahora el datar contiene los datos restaurados. Está listo para iniciar el servidor.

Referencias

MySQL 8.0 Reference Manual – https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html

MySQL Backup Using Bacula Enterprise Edition whitepaper – http://baculaystems.com

Disponível em: pt-brPortuguês (Portugués, Brasil)enEnglish (Inglés)esEspañol

Deja una respuesta