Perso j'utilise backuppc (comme déjà dis sur la liste d'ailleurs).
Bonsoir,
petite optimisation rapide de ta boucle for, gain de temps et d'espace disque :mysqldump $i -u $UTILISATEUR_SQL --password=$MOT_DE_PASSE_SQL | gzip | ssh $UTILISATEUR_DISTANT@$SERVEUR_DEST "cat >$DOSSIER_DEST/$PREFIX$i.sql.gz"
for i in $( echo "show databases;" | mysql -uadmin -p$MOT_DE_PASSE_SQL | grep -v "Database" ); do
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_DISTANT@$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_DISTANT@$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