Configurer une sauvegarde locale MariaDB/MySQL sur Debian 11 « bullseye »


Tout d’abord, si tu veux mettre en place une sauvegarde automatique de MariaDB sur Debian 11, c’est simple !

Et attention, je m’adresse à tout le monde, car avant d’entrer dans les détails : j’ai une petite info pour toi. Si tu penses que ta sauvegarde locale est la solution à tous tes problèmes, eh bien, détrompe-toi ! Ce n’est pas parce que tu as copié tes données sur ton ordinateur que tu es à l’abri de tout pépin.

Non, non, non, je te vois venir avec tes gros sabots. Il ne faut pas confondre une sauvegarde locale avec une sauvegarde de qualité. Parce que si ton stockage se fait la malle, tu peux dire adieu à tes données. Et si tu ne veux pas te retrouver dans la panade, tu as intérêt à en faire ensuite une copie elle aussi automatique sur un autre support, comme un disque dur externe, un cloud ou même une clé USB.

Donc, pour résumer : une sauvegarde locale, c’est bien beau, mais ce n’est pas une vraie sauvegarde. Alors, fais gaffe à ne pas te faire avoir !

Ceci étant dit, lecteur, si veux continuer, tu suis ces étapes-là :

D’abord, tu tapes ça :

Bash
sudo apt install mariadb-backup

Après, tu crées un fichier pour la config de la sauvegarde. Par exemple, tu peux faire :

Bash
sudo nano /etc/mysql/mariadb.conf.d/mariadb-backup.cnf

Et là, tu mets ça :

Diff
[mariabackup]
user = backup
password = TonMotDePasse

Et tu remplaces « TonMotDePasse » par ton propre mot de passe.

Ensuite, tu créés un compte utilisateur pour avoir le droit d’effectuer la sauvegarde. Pour ça, tu tapes :

Bash
sudo mysql

Et après, tu tapes :

SQL
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'TonMotDePasse';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT, CONNECTION ADMIN ON *.* TO 'backup'@'localhost';

Encore une fois, tu remplaces « TonMotDePasse » par ton propre mot de passe.

Après, tu crées le script de sauvegarde. Pour ça, tu tapes :

Bash
sudo nano /usr/local/bin/mariadb-backup.sh

Et là, tu mets ça :
— Pour ma part j’ai configuré le nombre max de backups à 504 (21 jours à raison d’une sauvegarde chaque heure), au lieu de 42—

Bash
#!/bin/bash
MAX_BACKUPS=42
BACKUP_DIR=/var/backups/mysql
DATE=$(date +%Y-%m-%d-%H-%M-%S)

# Créer une nouvelle sauvegarde
mariabackup --backup --target-dir=$BACKUP_DIR/$DATE

# Compter le nombre de sauvegardes actuelles
NUM_BACKUPS=$(find $BACKUP_DIR -maxdepth 1 -type f -name "*.xz" | wc -l)

# Si le nombre de sauvegardes est supérieur à MAX_BACKUPS, supprimer la plus ancienne
if [ $NUM_BACKUPS -gt $MAX_BACKUPS ]; then
OLDEST_BACKUP=$(find $BACKUP_DIR -maxdepth 1 -type f -name "*.xz" | sort | head -n 1)
rm -f $OLDEST_BACKUP
fi

# Compresser la sauvegarde en format xz, on est pas pressés donc priorité cpu faible
nice -n 19 tar -cJf $BACKUP_DIR/$DATE.tar.xz $BACKUP_DIR/$DATE

# Supprimer la sauvegarde non compressée
rm -rf $BACKUP_DIR/$DATE

Enregistre et ferme le fichier de script (CTRL+O), puis rends-le exécutable en tapant :

Bash
sudo chmod +x /usr/local/bin/mariadb-backup.sh

Et enfin, configure une tâche Cron pour que le script de sauvegarde s’exécute automatiquement. Par exemple, si tu veux que ça se fasse tous les jours à minuit, tu tapes :

Bash
sudo crontab -e

Et tu ajoutes ça à la fin du fichier de tâches Cron : (une sauvegarde chaque jour)

Plaintext
0 0 * * * /usr/local/bin/mariadb-backup.sh

#Autre possibilité, sauvegarder toutes les 8 heures :

0 */8 * * * /usr/local/bin/mariadb-backup.sh

Avec cela, tu aura donc une « sauvegarde » locale de MariaDB. N’oublie pas ensuite de faire une copie régulière sur un autre support.

Commentaires

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.