26.05.2023

Comment sauvegarder MySQL on CentOS 8 avec Bacula

Nous avons déjà brièvement examiné en quoi consiste le Bakula. Dans ce tutoriel, nous allons mettre en place un MySQL processus de sauvegarde de base de données à l'aide de Bacula sur CentOS. Si vous souhaitez mettre en place sauvegardes d'une télécommande CentOS 8 serveur, lisez cet article. Après avoir terminé ces paramètres, vous pouvez simplement ajouter les paramètres de ce didacticiel et obtenir une sauvegarde du MySQL base de données à partir d'un serveur distant.
Dans le Serverspace vous pouvez créer un serveur avec l'application déjà installée "MySQL".

Installation des packages

Installons tous les packages nécessaires.

dnf installer bacula-director bacula-stockage bacula-console bacula-client

MySQL paramétrage

Remplacez le système de gestion de base de données par défaut par MySQL s'il n'est pas déjà défini.

modifiernatives --config libbaccats.so
Il y a 3 programmesrams qui fournissent 'libbaccats.so'.
Commande de sélection
-----------------------------------------------
1 /usr/lib64/libbaccats-mysql.so

Sélectionnez 1.
Connectez-vous à MySQL.

mysql -u racine -p

Créez une base de données et un utilisateur pour Bacula.

créer bacula de base de données ;
créer un utilisateur bacula@localhost identifié par 'password' ;
accorde tous les privilèges sur bacula.* à bacula@'localhost' ;
FLUSH PRIVILEGES;
sortie

Exécutez ce script pour créer la structure de la table.

/usr/libexec/bacula/make_mysql_tables -p

Pour la tâche de sauvegarde, créez un nouvel utilisateur et attribuez-lui uniquement les droits d'accès nécessaires.

mysql -u racine -p
créer un utilisateur dump@localhost identifié par 'password' ;
accorder select, verrouiller les tables sur *.* à dump@localhost ;
accorder le processus sur *.* à dump@localhost ;
FLUSH PRIVILEGES;
sortie

Préparation de scripts

Pour rendre Bacula capable de créer des sauvegardes d'un MySQL base de données, vous devez d'abord la vider. Nous utiliserons la capacité de Bakula à exécuter des scripts personnalisés avant et après la tâche de sauvegarde. Créons un script pour créer un vidage de base de données.

nano /etc/bacula/pre-mysql. Sh

Insérez-y ces commandes. Notez que le déverser le mot de passe utilisateur doit être saisi après le -p parameter sans un space et changer nom de la base de données au nom du DB cible.

#! / Bin / bash
# Préparation du dossier
rm -rf /opt/mysql-sauvegarde/
mkdir -p /opt/mysql-sauvegarde/
# Sauvegarde
mysqldump -u dump -ppassword nom_base_de_données > /opt/mysql-sauvegarde/vidage$(date +%Y-%m-%d_%H:%M).sql

Et un script pour effacer le disque space après la sauvegarde.

nano /etc/bacula/post-mysql. Sh

Insérez ici les lignes suivantes.

#! / Bin / bash
# Vider le dossier
rm -rf /opt/mysql-sauvegarde/

Rendre les scripts exécutables.

chmod +x /etc/bacula/pre-mysql. Sh
chmod +x /etc/bacula/post-mysql. Sh

Configuration Bacula

Ouvrez le fichier /etc/bacula/bacula-dir.conf et définissez le mot de passe pour MySQL bacula utilisateur dans le mot de passe db parammètre de la Catalogue .

Catalogue {
Nom = MonCatalogue
nombase = "bacula"; dbuser = "bacula"; dbpassword = "mot de passe"
}

Insérez les sections avec MySQL paramètres de sauvegarde ici.

Ensemble de fichiers {
Nom = MySQLEnsemble de fichiers
Inclure {
Choix {
signatvaleur = MD5
}
Fichier = /opt/mysql-backup
}}
Calendrier {
Nom = MySQL
Exécuter = Complet tous les jours à 03h00
}
Emploi {
Nom = "MySQLSauvegarde"
JobDefs = "Travail par défaut"
Activé = oui
Niveau = Complet
Jeu de fichiers = MySQLEnsemble de fichiers
Horaire = MySQL
Stockage = Fichier1
ClientRunBeforeJob = "/etc/bacula/pre-mysql.sh"
ClientRunAfterJob = "/etc/bacula/post-mysql.sh"
Ecrire Bootstrap = "/var/spool/bacula/%c.bsr"
}

Démarrez et activez les services Bacula.

systemctl activer --now bacula-dir.service
systemctl activer --now bacula-fd.service
systemctl activer --now bacula-sd.service

Désormais, les sauvegardes de la base de données sélectionnée seront effectuées à l'heure spécifiée.