Sauvegarde automatique d'un serveur MySQL

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.