Bonsoir,
petite optimisation rapide de ta boucle for, gain de temps et d'espace
disque :
for i in $( echo "show databases;" | mysql -uadmin -p$MOT_DE_PASSE_SQL |
grep -v "Database" ); do
mysqldump $i -u $UTILISATEUR_SQL --password=$MOT_DE_PASSE_SQL | gzip |
ssh $utilisateur_dist...@$serveur_dest "cat >$DOSSIER_DEST/$PREFIX$i.sql.gz"
done
Et une autre optimisation pour backupper en // (à tester j'ai écris
comme ça) :
NB_CORES=$( grep processor /proc/cpuinfo | wc -l )
for db in $( mysql -uadmin -p$MOT_DE_PASSE_SQL -e "show databases" ); do
mysql -ABN -uadmin -p$MOT_DE_PASSE_SQL -e "SELECT TABLE_NAME FROM
TABLES WHERE TABLE_SCHEMA='$db'" information_schema | xargs -n1
-P$NB_CORES -I{} sh -c "mysqldump -uadmin -p$MOT_DE_PASSE_SQL $db {} |
gzip | ssh $utilisateur_dist...@$serveur_dest 'cat
>$DOSSIER_DEST/$PREFIX$i.sql.gz'"
done
Le 16/11/2010 16:49, Laurent Druffin a écrit :
#!/bin/sh
DOSSIER_TEMPORAIRE_LOCAL=/xxx/xxx/xxx
SERVEUR_DEST=xxxxxx
DOSSIER_DEST=/xxxx/xxx/xxx
UTILISATEUR_DISTANT=xxxxx
MOT_DE_PASSE_SQL=xxxxx
UTILISATEUR_SQL=admin
PREFIX=serveur-xxxx-
for i in $( echo "show databases;" | mysql -uadmin -p$MOT_DE_PASSE_SQL
| grep -v "Database" ); do
mysqldump $i -u $UTILISATEUR_SQL --password=$MOT_DE_PASSE_SQL >
$DOSSIER_TEMPORAIRE_LOCAL/$i.sql
gzip $DOSSIER_TEMPORAIRE_LOCAL/$i.sql
# penser avant au certificat SSH et au ~/.ssh/authorized_keys kivabien !
scp $DOSSIER_TEMPORAIRE_LOCAL/$i.sql.gz
$utilisateur_dist...@$serveur_dest:$DOSSIER_DEST/$PREFIX$i.sql.gz
rm $DOSSIER_TEMPORAIRE_LOCAL/$i.sql.gz
done
# restauration avec la commande :
# gunzip fichier_sauvegarde.sql.gz
# mysql -u root -p NomDeLaBase < fichier_sauvegarde.sql
#eof()
et un simple crontab kivabien aussi... :)
C'est basique et sûrement améliorable (garder un historique par
exemple), mais ça fonctionne et ça répond à mes besoins.
My 2 cents...
^^
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/
--
Greg
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/