Hug,
On 16 Nov 2010, at 17:15 , Greg wrote:
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_DISTANT@$SERVEUR_DEST "cat >$DOSSIER_DEST/$PREFIX$i.sql.gz" done
Pour faire un backup a chaud d'une base utilisant innodb, il faut utiliser le --single-transaction. Ca fait un flush de toutes les tables puis lance le dump dans une transaction. Cette option, plus le --master-data, et vous avez un dump cohérent avec les informations du slave pour reprendre le binlog au bon endroit au cas où (si le dump est fait sur le master).
Generalement pour mes dumps j'utilise donc: mysqldump -qCe --single-transaction --master-data=1 -uroot -pxxx --databases x y z
Avec MyISAM c'est un peu plus chiant...
jym