Sauvegarde automatique de Mysql
Dans cette deuxième partie de la mise en place d'un serveur de backup, nous allons nous occuper principalement de la sauvegarde des bases de données MYSQL. BackupPC permet la sauvegarde complète d'un serveur, ce qui inclus aussi les bases de données, mais il est tellement plus pratique de pouvoir restaurer ses bases MySQL depuis un dump.
Ce script crée un dossier par base de données, et stock les dumps quotidiens à l'intérieur de chaque dossier. Ainsi nous pourrons ajouter ces dossiers à BackupPC et donc facilement restaurer une, ou plusieurs bases de données, à un instant T.
Création de l'utilisateur mysql pour le dump
Se connecter sur le serveur à sauvegarder et ajouter les droits nécessaires pour l'utilisateur de dump. Dans notre cas, je l'ai simplement appelé "backup"
mysql -u root -p (entrez le mot de passe lorsqu'il vous sera demandé)
GRANT USAGE,SELECT,LOCK TABLES ON *.* TO backup@localhost IDENTIFIED BY 'MonMotDePasseTopSecret'; FLUSH PRIVILEGES;
Exit
Maintenant on récupère le script automysqlbackup que l'on va stocker dans un dossier temporaire
mkdir tmpbck
cd tmbbck
wget http://downloads.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz
tar zxvf automysqlbackup-v3.0_rc6.tar.gz
Installation automatique :
bash install.sh
Edition de la configuration (suffisamment bien documenté pour être compréhensible). Il s'agit de décommenter les lignes nécessaires (user, password, Dir, etc ...)
vi /etc/automysqlbackup/myserver.conf
Là encore, je conseille de choisir un dossier de destination monté sur une partition de grande taille.
A ce stade, vous pouvez tester votre installation :
automysqlbackup /etc/automysqlbackup/myserver.conf
En cas d'erreur -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly :
- Editer le fichier de configuration mySQL my.cnf
- Ajouter/rechercher la section [mysqldump] et ajouter la ligne :
- events
Enfin on donne les privilèges à l'utilisateur pour exécuter le script
sudo vi /etc/sudoers
Ajouter cette ligne dans le fichier :
backuppc ALL=NOPASSWD: /usr/local/bin/automysqlbackup
Le script de sauvegarde MySQL est installé sur votre serveur. Il ne reste plus qu'à l'ajouter à la configuration de BackupPC pour qu'il soit exécuté à chaque lancement d'une nouvelle sauvegarde.
Configuration SSH entre le serveur de Backup et les serveurs clients
En partant du principe que nous réalisons des sauvegardes entre serveurs Linux, le plus simple est d'utiliser Rsync via SSH. Il faut donc configurer une paire de clé et copier la clé publique sur les serveurs clients.
Sur le serveur Client (Celui qu'on veut sauvegarder) :
adduser backuppc echo "backuppc ALL=NOPASSWD: /usr/bin/rsync" >> /etc/sudoers
Sur le serveur de SAUVEGARDE :
sudo su - backuppc
ssh-keygen -t rsa -C "backuppc"
ssh-copy-id backuppc@IP.DU.CLIENT
Ne reste plus, coté client, qu'à ajouter la directive "from=IP.CLIENT" :
vi ~/.ssh/authorized_keys
from="1.2.3.4" ssh-rsa ....