Accueil > Informatique > Poweredge T105 > sauvegarde et restaure de base mysql
sauvegarde et restaure de base mysql
mardi 26 août 2008, par
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}_<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZGF0ZSArJUQgfCBzZWQgJ3M7LzstO2cnPC9jb2RlPg=="></span>.sql
## Compression des exports en tar.bz2 (le meilleur taux de compression)
tar jcf ${i}_<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZGF0ZSArJUQgfCBzZWQgJ3M7LzstO2cnPC9jb2RlPg=="></span>.sql.tar.bz2 ${i}_<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZGF0ZSArJUQgfCBzZWQgJ3M7LzstO2cnPC9jb2RlPg=="></span>.sql
## Suppression des exports non compressés
rm ${i}_<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZGF0ZSArJUQgfCBzZWQgJ3M7LzstO2cnPC9jb2RlPg=="></span>.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