L'objectif est de sauvegarder toutes les bases d'un serveur MySQL de façon régulière et automatique.
On va utiliser un utilisateur spécial pour mysqldump.
Création de l'utilisateur
GRANT LOCK TABLES, SELECT ON *.* TO backup@localhost;
On sauvegarde l'ensemble des bases tous les jours, on utilise cron pour cela, en créant le fichier /etc/crond/daily/mysql-backup
Fichier /etc/cron.daily/mysql-backup
#!/bin/bash mysqldump --all-database -u backup > /home/backup/mysql/db.dump
Il faut rendre exécutable le fichier :
sudo chmod 755 mysql-backup
Pour que les sauvegardes tournent sur un certain temps, il suffit d'utiliser logrotate. On le configure dans le fichier /etc/logrotate.d/mysql-backup.
Fichier /etc/logrotate.d/mysql-backup
/home/backup/mysql/db.dump {
daily
rotate 30
compress
missingok
dateext
}
En l'occurrence les sauvegardes tournent tous les jours et sont conservées pendant 30 jours.