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 install bacula-director bacula-storage 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.
alternatives --config libbaccats.so
There are 3 programs which provide 'libbaccats.so'.
Selection Command
-----------------------------------------------
1 /usr/lib64/libbaccats-mysql.so
...
Sélectionnez 1.
Connectez-vous à MySQL.
mysql -u root -p
Créez une base de données et un utilisateur pour Bacula.
create database bacula;
create user bacula@localhost identified by 'password';
grant all privileges on bacula.* to bacula@'localhost';
flush privileges;
exit
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 root -p
create user dump@localhost identified by 'password';
grant select, lock tables on *.* to dump@localhost;
grant process on *.* to dump@localhost;
flush privileges;
exit
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
# Preparation of the folder
rm -rf /opt/mysql-backup/
mkdir -p /opt/mysql-backup/
# Backup
mysqldump -u dump -ppassword database_name > /opt/mysql-backup/dump$(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
# Clearing the folder
rm -rf /opt/mysql-backup/
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 .
Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "password"
}
Insérez les sections avec MySQL paramètres de sauvegarde ici.
FileSet {
Name = MySQLFileSet
Include {
Options {
signature = MD5
}
File = /opt/mysql-backup
}}
Schedule {
Name = MySQL
Run = Full daily at 03:00
}
Job {
Name = "MySQLBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = MySQLFileSet
Schedule = MySQL
Storage = File1
ClientRunBeforeJob = "/etc/bacula/pre-mysql.sh"
ClientRunAfterJob = "/etc/bacula/post-mysql.sh"
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
Démarrez et activez les services Bacula.
systemctl enable --now bacula-dir.service
systemctl enable --now bacula-fd.service
systemctl enable --now bacula-sd.service