Sauvegarde des bases Mysql/MariaDB avec Xtrabackup
deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
... [some output removed] ...
gpg: imported: 1
# gpg -a --export CD2EFD2A | apt-key add -
puis on met à jour ses dépôts et on installe le logiciel :
# apt-get update && apt-get install xtrabackup
Mon cahier des charges était simple :
#!/bin/sh
#on purge les backups de plus de 3j
/usr/bin/find /root/backup_sql/mysql_hot_*.tar.gz -type f -mtime +3 | xargs rm -f
#on crée la sauvegarde des bases
/usr/bin/innobackupex-1.5.1 --defaults-file=/etc/mysql/my.cnf --user='root' --password='XXXX' --no-lock --stream=tar --slave-info /root/backup_sql | gzip - > /root/backup_sql/mysql_hot_`/bin/date +%m-%d-%Y-%H_%M`.tar.gz
Une petite explication sur les paramètres me parait judicieux :
# m h dom mon dow command
0 9-19 * * mon,tue,wed,thu,fri /root/innobck.sh && rsync -e ssh -avz --delete-after /root/backup_sql/ root@172.20.1.60:/data/mixmysql/
10 9-19 * * mon,tue,wed,thu,fri /usr/bin/scp /root/backup_sql/*.tar.gz root@mixmysql2:/root/backup_sql/
Voilà pour la sauvegarde. Passons maintenant à la restauration de nos bases le cas échéant. Comme précédemment, j’ai créé un script de restauration qui effectue toutes les étapes nécessaires :
#!/bin/bash
if [ -z "$1" ]
then
echo "usage ./restore.sh nomdufichier a restaurer"
exit;
fi
#Arret du serveur Mysql
echo "Arret du serveur Mysql"
/etc/init.d/mysql stop
#Renommage du rep des data de mysql && suppression d'une vieille restauration
echo "Renommage du repertoire de donnees Mysql"
rm -Rf /var/lib/mysql_old
mv /var/lib/mysql /var/lib/mysql_old
#Creation du rep data de mysql
echo "creation du repertoire mysql"
mkdir /var/lib/mysql
#Copie de l'archive dans le rep data Mysql
echo "Copie de l'archive a restaurer"
cp /root/backup_sql/$1 /var/lib/mysql
#Décompression de l'archive
echo "Decompression de l'archive"
cd /var/lib/mysql && tar xvzfi $1
#Chgt des droits Mysql
echo "Changement de droits des fichiers"
chown -R mysql:mysql /var/lib/mysql
#Effacement de l'archive dans le dossier data
echo "Purge de l'archive dans le dossier data de mysql"
rm -f /var/lib/mysql/$1
#Relance du serveur
echo "Relance du serveur"
/etc/init.d/mysql start
Le fichier est relativement bien commenter, il faut donc lancer la restauration en invoquant le script adéquat en lui passant en paramètre le nom de l’archive à restaurer :
# ./root/restore.sh mysql_hot_12-24-2010-11_00.tar.gz
Et voilà, le serveur est comme il était le 24/12/2010 à 11h00 


By zatmania
By Dimitri
By zatmania
By Anonyme