L'objectif est de sauvegarder toutes les bases d'un serveur MySQL de façon régulière et automatique.
Création de l'utilisateur
On va utiliser un utilisateur spécial pour mysqldump.
GRANT LOCK TABLES, SELECT ON *.* TO backup@localhost;
Script de sauvegarde
On sauvegarde l'ensemble des bases tous les jours, on utilise cron pour cela, en créant le fichier /etc/crond/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
Rotation des sauvegarde
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.
/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.