Netbackup para MariaDB

Introducción

 

El agente de MariaDB permite hacer copias de seguridad y restauración de bases de datos de MariaDB. Para realizar estas copias de seguridad, Netbackup solicita a MariaDB que ponga las bases de datos en un estado consistente y a continuación se realiza un snapshot (LVM en Linux o VSS en Windows) para posteriormente copiar las bases de datos al almacenamiento de copia:

 

 

Los sistemas operativos soportados son los siguientes:

 

  • Red Hat Enterprise Linux 6.8 y posteriores
  • SUSE Enterprise Linux Server 11 SP4 y posteriores
  • Microsoft Windows Server 2012 y posteriores
  • Microsoft Windows 8.1 y posteriores
  • Netbackup 8.2 y posteriores

 

Configuración

 

Una vez instalado el cliente de Netbackup, es necesario descargar e instalar el plugin de MariaDB de la misma versión. Es muy importante que la versión del plugin y del cliente de Netbackup sea la misma. En Windows es un ejecutable y en Linux es un paquete rpm.

 

Una vez instalado el plugin, hay que hacer la configuración, en Windows hay que añadir el directorio bin a la variable de entorno PATH y en Linux hay que crear un enlace simbólico de las siguientes librerías:

 

  • libmariadb.so enlazado a libmariadb.so.<n>
  • libmysqlclient.so enlazado a libmysqlcliente.so.<n>

 

Dependiendo de la versión de MariaDB encontraremos una librería u otra.

 

En cuanto a las credenciales que usemos para hacer copia de seguridad de MariaDB, hay que aplicar los siguientes privilegios:

 

User type Privileges
Backup LOCK TABLES, SELECT FILE, RELOAD, SUPER, UPDATE, TRIGGER, SHOW, VIEW, EXECUTE, and EVENT.
Restore CREATE, DROP, INDEX, SHUTDOWN, INSERT, ALTER, DELETE, UPDATE, TRIGGER, SUPER, and CREATE VIEW.

 

Se pueden asignar los permisos con el siguiente comando:

 

GRANT SELECT, INSERT, UPDATE, CREATE, DROP, RELOAD, SHUTDOWN, FILE, INDEX, ALTER, SUPER, LOCK TABLES, CREATE VIEW, SHOW VIEW, TRIGGER, CREATE ROUTINE, DELETE, EVENT, ALTER ROUTINE ON, *.* TO ‘USER’ @ ‘localhost’ IDENTIFIED BY ‘PASSWORD’;

 

Para hacer backup de MariaDB, tenemos que crear una política en nuestro master de tipo Datastore, incluyendo como lista de selección el fichero que ejecute los comandos para hacer la copia de seguridad (ver en referencias un fichero de ejemplo).

 

A continuación, configuraremos el fichero /usr/NBMariaDBAgent/nbmariadb.conf con los datos de nuestro entorno:

 

# Filename: nbmariadb.conf
[MariaDB database server parameters]
#————————————————————————————————————
# Required parameter for MariaDB backup.
# MariaDB database username.
# For example, DB_USER=dbuser
# Default_value=root
# To override the default value, configure and uncomment the parameter.
#————————————————————————————————————
DB_USER=epereira

#————————————————————————————————————
# Required parameter for MariaDB backup.
# MariaDB database server port number.
# For example, DB_PORT=3307
# Default_value=3306
# To override the default value, configure and uncomment the parameter.
#————————————————————————————————————
DB_PORT=3306

#————————————————————————————————————
# Optional parameter for PostgreSQL backup.
# Configure this parameter to map database instance name to PostgreSQL backup while querying for backups.
# PostgreSQL database instance name.
# For example, DB_PORT=db_instance_1
#————————————————————————————————————
# DB_INSTANCE_NAME=

#————————————————————————————————————
# Required parameter for MariaDB backup.
# MariaDB Library path.
# (Windows) Configure this parameter to point to libmariadb.dll.
# For example, (Windows) MARIADB_LIB_INSTALL_PATH=C:\Program Files\MariaDB 10.2\lib.
# (Linux) Configure this parameter to point to libmariadb.so.
# For example, (Linux) MARIADB_LIB_INSTALL_PATH=/usr/local/mysql/lib.
#————————————————————————————————————
MARIADB_LIB_INSTALL_PATH=/usr/lib64

[NetBackup parameters]
#————————————————————————————————————
# Required parameter for MariaDB backup, restore, query, and delete.
# Identifies the host name for the NetBackup master server.
# For example, MASTER_SERVER_NAME=nb_master
#————————————————————————————————————
MASTER_SERVER_NAME=epereira-mas02.epereira-dom01.local

#————————————————————————————————————
# Required parameter for MariaDB backup.
# Identifies a specific NetBackup DataStore policy name to be used.
# Configure this parameter for backup and query.
# For example, POLICY_NAME=DataStore
#————————————————————————————————————
POLICY_NAME=mariadb_test

#————————————————————————————————————
# Required parameter for MariaDB backup.
# Specifies the Default Application Schedule name configured with the DataStore policy name.
# For example, SCHEDULE_NAME=Default-Application-Backup
#————————————————————————————————————
SCHEDULE_NAME=Default-Application-Backup

 

Y por último crearemos un fichero en el directorio home del usuario llamado .my.cnf con las credenciales que queremos que utilice el agente:

 

[client]

user=epereira

password=<password>

 

Podemos proteger este fichero con; chmod 0600 .my.cnf

 

Para hacer una copia de seguridad, tenemos que ejecutar el siguiente comando:

 

[root@epereira-rh01 ~]# /usr/NBMariaDBAgent/nbmariadb -o backup
Warning! Log size is not set or 0. Setting the log-size to 10 MB
Loading MariaDB library -/usr/lib64/libmariadb.so
Backup initiated from XBSA …
MariaDB version: 10.5.16
MariaDB database backup is in progress…
File backed up: /MariaDB/aria_log_control
File backed up: /MariaDB/aria_log.00000001
File backed up: /MariaDB/ibdata1
…………………………..
File backed up: /MariaDB/ib_buffer_pool
File backed up: /MariaDB/ibtmp1
MariaDB database backup is successful!
Number of files backed up: 100
Completed the backup operation

 

Podemos ver la lista de backups con el siguiente comando:

 

[root@epereira-rh01 ~]# /usr/NBMariaDBAgent/nbmariadb -o query
Warning! Log size is not set or 0. Setting the log-size to 10 MB
Query initiated from XBSA …
Setting the policy : mariadb_test
Setting the client host : epereira-rh01.epereira-dom01.local
Query is successful!
======================================================================================================================
DBBackup ID MariaDB Version Client OS DB Port Backup Time DB Instance
======================================================================================================================
1655283323 MariaDB v10.5.16 Linux LVM 3306 Wed Jun 15 04:55:23 2022
1655223562 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 12:19:22 2022
1655223007 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 12:10:07 2022
1655222331 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 11:58:51 2022
1655222295 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 11:58:15 2022
1655222273 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 11:57:53 2022
1655222227 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 11:57:07 2022
1655220254 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 11:24:14 2022
1655219012 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 11:03:32 2022
1655217887 MariaDB v10.5.16 Linux LVM 3306 Tue Jun 14 10:44:47 2022
Completed the query operation

 

Para hacer la restauración, debemos parar primero el servidor MariaDB y podremos restaurarlo con el siguiente comando (es necesario especificar la ruta con el parámetro -t y si queremos elegir también el backup a restaurar lo podremos especificar con el parámetro-id):

 

[root@epereira-rh01 lib]# /usr/NBMariaDBAgent/nbmariadb -o restore -id 1655217887 -t /var/lib/mysql
Warning! Log size is not set or 0. Setting the log-size to 10 MB
Restore initiated from XBSA
MariaDB database restore is in progress
Restoring MariaDB v10.5.16
File restored: /var/lib/mysql/aria_log_control
File restored: /var/lib/mysql/aria_log.00000001
…………….
File restored: /var/lib/mysql/ib_buffer_pool
File restored: /var/lib/mysql/ibtmp1
Number of files restored: 98
MariaDB database restore is successful!
Completed the restore operation

 

De esta forma podemos integrar MariaDB en nuestro sistema de copias de seguridad.

 

Referencias

NetBackup™ for MariaDB Administrator’s Guide

How to schedule MariaDB backups from NetBackup

 

 

2 comentarios en “Netbackup para MariaDB”

Deja una respuesta

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