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).