Chez Ptit Gars

Accueil > Informatique > Poweredge T105 > sauvegarde et restaure de base mysql

sauvegarde et restaure de base mysql

mardi 26 août 2008, par Pti Gars

il est assez utiles de sauvegarder les bases de données, en cas de crach de la base, où il faudrait tout réinstaller, ou lors de mauvaises manipulations.

Sauvegarde

Pour faire une sauvegarde hors ligne, voici une méthode simple et rapide :

1) On arrête la base :

/etc.init.d.mysqld stop

2) copie des fichiers de données et des répertoires de MYSQL :

cp -r /var/lib/mysql /tmp/mysql-backup

3) on redémarre le serveur

/etc/init.d/mysqld start

L’autre méthode pour sauvegarder en automatique, est de faire un dump : mysqldump. voici un exemple :

$ mysqldump -u root -p secret stocksdb > stocksdb.sql


Il est nécessaire de re-diriger la sortie vers un fichier, sinon le résultat s’affiche dans le terminal, pas très utile !!

Nous allons créer un script qui sauvegarde l’ensemble des tables et qui les compresse :
backup_bdd.sh

#!/bin/bash
#
## on se place dans le répertoire où l'on veut sauvegarder les bases
#
cd /home/mysql_backup
# on sauvegarde les base de egroupware,jcb et spip
for i in egroupware jcb proftpd spip; do

## Sauvegarde des bases de données en fichiers .sql
mysqldump -uroot -pMotdePass $i > ${i}_`date +%D | sed 's;/;-;g'`.sql

## Compression des exports en tar.bz2 (le meilleur taux de compression)
tar jcf ${i}_`date +%D | sed 's;/;-;g'`.sql.tar.bz2 ${i}_`date +%D | sed 's;/;-;g'`.sql

## Suppression des exports non compressés
rm ${i}_`date +%D | sed 's;/;-;g'`.sql

done

Ce script nous crée des fichiers horodaté, on met en place un autre script de purge :
clean_backups.sh

#!/bin/bash
#
## Supprime les sauvegardes vieilles de plus de 5 jours
#
find /home/mysql_backup/ -type f -mtime +4 | xargs -r rm

Pour automatisé tout cela, il suffit de créer des liens dans le répertoire /etc/cron.daily. Dans l’exemple les scripts se trouvent dans /root/scripts, pour la création de lien cela nous donne :

$ cd /etc/cron.daily
$ ln -s /root/scripts/backup_bdd.sh backup_bdd.sh
$ ln -s /root/scripts/clean_backups.sh clean_backups.sh


Il faut être root pour faire tout cela.

Restauration

La commande utilisé est :

mysql -u root -p MotDePass < backup.sql

Nos fichiers sont compressé, il est nécessaire de les décompressé avant :

tar -xjf egroupware_04-19-08.sql.tar.bz2


Cela nous crée le fichier egroupware_04-19-08.sql exploitable par mysql.
Ensuite il suffit de l’insérer dans mysql :

mysql -u root -p MotDePass < egroupware_04-19-08.sql