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).
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).
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).
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: Português (Portugués, Brasil)English (Inglés)Español