26.05.2023

Cómo hacer una copia de seguridad MySQL on CentOS 8 con bacula

Ya lo hemos hecho brevemente examinó en qué consiste el Bakula. En este tutorial, configuraremos un MySQL proceso de copia de seguridad de la base de datos usando Bacula en CentOS. Si desea configurar copias de seguridad de un control remoto CentOS 8 servidor, lee este artículo. Después de completar esta configuración, simplemente puede agregar la configuración de este tutorial y obtener una copia de seguridad del MySQL base de datos desde un servidor remoto.
En Serverspace usted puede crear un servidor con la aplicación ya instalada "MySQL".

Instalación de paquetes

Instalemos todos los paquetes necesarios.

dnf instalar bacula-director bacula-almacenamiento bacula-console bacula-client

MySQL configuración

Cambie el sistema de administración de base de datos predeterminado a MySQL si aún no está configurado.

alterarnatives --config libbacats.so
hay 3 programasrams que proporcionan 'libbaccats.so'.
Comando de selección
-----------------------------------------------
1 /usr/lib64/libbaccats-mysql.asi que
...

Seleccione 1.
Conectar a MySQL.

mysql -u raíz -p

Cree una base de datos y un usuario para Bacula.

crear base de datos bacula;
crear usuario bacula@localhost identificado por 'contraseña';
otorgar todos los privilegios en bacula.* a bacula@'localhost';
Enjuagar los privilegios;
salida

Ejecute este script para crear la estructura de la tabla.

/usr/libexec/bacula/make_mysql_tablas -p

Para la tarea de copia de seguridad, cree un nuevo usuario y asígnele solo los derechos de acceso necesarios.

mysql -u raíz -p
crear usuario dump@localhost identificado por 'contraseña';
otorgar seleccionar, bloquear tablas en *.* para dump@localhost;
otorgar proceso en *.* a dump@localhost;
Enjuagar los privilegios;
salida

Preparando guiones

Para que Bacula sea capaz de crear copias de seguridad de un MySQL base de datos, primero debe volcarlo. Usaremos la capacidad de Bakula para ejecutar scripts personalizados antes y después del trabajo de copia de seguridad. Vamos a crear un script para crear un volcado de base de datos.

nano /etc/bacula/pre-mysqlSh.

Inserte estos comandos en él. Tenga en cuenta que el arrojar La contraseña de usuario debe introducirse después de la -p parameter sin un space y cambio nombre de la base de datos al nombre de la base de datos de destino.

#! / Bin / bash
# Preparación de la carpeta
rm -rf /optar/mysql-respaldo/
mkdir -p /optar/mysql-respaldo/
# Respaldo
mysqldump -u dump -ppassword nombre_base_datos > /opt/mysql-copia de seguridad/volcado$(fecha +%Y-%m-%d_%H:%M).sql

Y un script para borrar el disco. space después de la copia de seguridad.

nano /etc/bacula/post-mysqlSh.

Inserte aquí las siguientes líneas.

#! / Bin / bash
# Limpiando la carpeta
rm -rf /optar/mysql-respaldo/

Haga que los scripts sean ejecutables.

chmod +x /etc/bacula/pre-mysqlSh.
chmod +x /etc/bacula/post-mysqlSh.

Configuración de Bacula

Abra el archivo /etc/bacula/bacula-dir.conf y configure la contraseña para MySQL bacula usuario en el contraseña de base de datos paraméter de la Catálogo .

Catálogo {
Nombre = MiCatálogo
dbname = "bacula"; dbuser = "bacula"; dbcontraseña = "contraseña"
}

Inserte las secciones con MySQL configuración de copia de seguridad aquí.

conjunto de archivos {
Nombre = MySQLconjunto de archivos
Incluir {
Opciones {
signatura = MD5
}
Archivo = /optar/mysql-backup
}}
Cronograma {
Nombre = MySQL
Run = Full todos los días a las 03:00
}
Trabajo {
Nombre = "MySQLrespaldo"
JobDefs = "Trabajo predeterminado"
Habilitado = si
Nivel = Completo
conjunto de archivos = MySQLconjunto de archivos
Horario = MySQL
Almacenamiento = Archivo1
ClientRunBeforeJob = "/etc/bacula/pre-mysql.sh"
ClientRunAfterJob = "/etc/bacula/post-mysql.sh"
Escriba Bootstrap = "/var/spool/bacula/%c.bsr"
}

Inicie y habilite los servicios de Bacula.

systemctl habilitar --ahora bacula-dir.servicio
systemctl habilitar --ahora bacula-fd.servicio
systemctl habilitar --ahora bacula-sd.servicio

Ahora se realizarán copias de seguridad de la base de datos seleccionada a la hora especificada.