MariaDB – Sauvegarde planifiée et automatique de vos Databases

Vous souhaitez sauvegarder quotidiennement et automatiquement l’ensemble de vos Databases MariaDB, je vous recommande les 3 étapes ci-dessous.


1 – Création d’un user Backup :

Création de l’utilisateur (Pensez à personnaliser votre username et votre password) –> create user 'username'@'localhost' IDENTIFIED BY 'YourPassword';

Lui attribuer les bons droits –> GRANT SELECT, SHOW VIEW, LOCK TABLES, RELOAD, REPLICATION CLIENT ON *.* TO 'username'@'localhost';

Application des nouveaux privilèges –> FLUSH PRIVILEGES;


2 – Création du script adéquat :

  • mkdir Database_Backup –> Création d’un dossier Database_Backup
  • touch db_backup.sh –> Création du fichier db_backup.sh
  • sudo chmod 700 db_backup.sh –> Attribution de tous les droits au fichier db_backup.sh pour le propriétaire, et d’aucun droit pour tous les autres.
  • nano db_backup.sh –> Edition du fichier db_backup.sh

Copiez le script ci-dessous 😉 En pensant à renseigner l’username/password de l’user backup créé au préalable, ainsi que les bons chemins (backupfolder, logfile)

#!/bin/bash
# Backup storage directory
backupfolder=/home/will/Database_Backup #update this to your home folder
logfile=/home/will/db_backup.log #update this to your home folder
# MySQL user
user=BACKUP_USER
# MySQL password
password=password #update this to the backup password you created
# Number of days to store the backup
keep_day=15
sqlfile=$backupfolder/all-database-$(date +%Y-%m-%d_%H-%M-%S).sql
zipfile=$backupfolder/all-database-$(date +%Y-%m-%d_%H-%M-%S).zip
echo Starting Backup [$(date +%Y-%m-%d_%H-%M-%S)] >> $logfile
 
# Create a backup
/usr/bin/mysqldump -u$user -p$password --all-databases >> $sqlfile
if [ $? == 0 ]; then
  echo 'Sql dump created' >> $logfile
else
  echo [error] mysqldump return non-zero code $? >> $logfile
  exit
fi
# Compress backup
zip -j $zipfile $sqlfile
if [ $? == 0 ]; then
  echo 'The backup was successfully compressed' >> $logfile
else
  echo '[error] Error compressing backup' >> $logfile
  exit
fi
rm $sqlfile
echo $zipfile >> $logfile
echo Backup complete [$(date +%Y-%m-%d_%H-%M-%S)] >> $logfile
# Delete old backups
find $backupfolder -mtime +$keep_day -delete

Une fois enregistré, vous pouvez le tester en saisissant la commande ./db_backup.sh


3 – Mise en place d’une tâche planifiée :

Il ne vous manque plus qu’à mettre en place votre tâche planifiée via crontab (Cliquez ici pour plus d’infos).