Percona XtraBackup Depuis que je travaille dans le monde du web, je vois des scripts de sauvegardes MySQL qui sont fait “maison” ou copier depuis des forums ou blogs de bidouilleurs, dont la plupart utilisent mysqldump avec plus ou moins les bonnes options. Avec MyISAM cela ne pose pas trop de problème car une simple copie de fichier suffit à avoir une sauvegarde à peu près utilisable, mais pas consistante. Par contre avec Innodb (qui est le moteur par défaut depuis la version 5.1), cela devient presque impossible. Avec le temps j’ai développé mon script perso aussi qui permet de palier à tout les cas que j’ai rencontré (oui il y a des gens qui appellent leur tables DROP/SELECT/INSERT ou y mettent des espaces dans les noms de champs). Aujourd’hui j’ai décidé de me pencher réellement sur le sujet et trouver une solution pro. Laquelle ? Percona Xtrabackup Je connais cette société depuis longtemps, ils sont une référence dans le monde LAMP et surtout MySQL (d’ailleurs nous utilisons leur plugins pour superviser vos serveurs avec Nagios & Cacti). C’est donc naturellement que j’ai attaqué par leur outil phare pour voire s’il faisait ce que je voulais :

  • Sauvegardes de toutes les types de tables (MyISAM/Innodb/Archive etc….)
  • Gestion des transactions Innodb
  • Sauvegarde à chaud quand cela est possibles
  • Compression des sauvegardes
  • Horodatage des sauvegardes

La suite de cette étude m’a donné les outils nécessaires :

Etape 1: Installer Xtrabackup

Voir ici : https://www.percona.com/doc/percona-xtrabackup/2.1/installation.html

Etape 2: Gardez votre mot de passe secret

  • vim /root/.my.cnf
  • jouter les lignes suivantes :

[client] user=root pass=xxxxxx

  • chmod 600 /root/.my.cnf

Etape 3: Le script de sauvegarde

#!/bin/bash
BACKDIR=/backups/mysql/xtrabackup
TODAY=$(date +%Y-%m-%d)
echo "+ starting backup"
innobackupex --no-timestamp ${BACKDIR}/${TODAY}
echo "+ applying log file"
innobackupex --apply-log ${BACKDIR}/${TODAY}
echo "+ done"

Etape 4: Mettre le tout en crontab

  • vim /etc/crontab
  • 17 12 * * * root /opt/webofmars/wom-mysql-backup >/dev/null

Voilà vous aurez une sauvegarde cohérente de vos bases de données et pas besoin de bidouiller avec des boucles for en bash ;-)   PS: webofmars est spécialiste de vos sauvegardes en environnement LAMP, n’hésitez pas à nous contacter si vous voulez étudier une prestation autour de ces sujets.