Problème de sauvegarde Mysl

Bonjour à tous,

Je voudrais mettre en place une sauvegarde automatisée de l’ensemble de mes bases de données mysql.

Pour cela, j’ai regardé sur le net et je suis tombé sur un script bash. Mais je n’arrive pas à comprendre ce que fait ce ce script… Voici l’adresse du lien : c’est un tutoriel redigé par ubuntu: doc.ubuntu-fr.org/tutoriel/sauve … de_donnees. Je voudrais pouvoir sauvegarder l’ensemble de mes bases de données d’un seul coup.

Si j’ai bien compris à la ligne "for i in “”; do, il faut lui préciser le nom des bases de données que nous souhaitons sauvegarder.

Par contre, je ne comprends pas cette ligne :

"# Récupère toutes les bases de données
databases=mysql --user=root --password=monpass -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"

parcours les bases

Pourquoi le script va chercher la base information schéma, et parcours ensuite toues les bases ?

Faut-il lui préciser également le nom des bases de données ou bien cela suffit en prenant uniquement la base information_schema ?

Je vous remercie d’avance pour votre aide.

Frédéric

J’ai essayé '
for i in $databases; do

SHOW DATABASES => liste toutes les bases de données
grep -Ev "(Database|information_schema) => d’après man grep, l’option -E sert à préciser l’utilisation d’expression régulière, donc ici (Database|information_schema); et l’option -v pour dire qu’on cherche les lignes ne correpondant PAS à l’expression régulière, càd tout sauf (Database|information_schema).

D’accord merci pour ta réponse.

Autre question :

Pourquoi l’authentification change lorsque nous voulons sauvegarder l’ensemble des bases de données :

Récupère toutes les bases de données

databases=mysql --user=root --password=monpass -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"

parcours les bases

for i in $databases; do

Alors que lorsque nous sauvegardons une liste de bases de données l’authentification est :

Sauvegarde des bases de donnees en fichiers .sql

mysqldump -uroot -pmonpass $i > ${i}_date +"%Y-%m-%d".sql

J’essaie de faire fonctionner mon script depuis ce matin sans résultat.

Merci d’avance pour vos réponses.

Frédéric

=> c’est quoi le message d’erreur à la suite de cette commande ?

Si ca peut t’aider, voila mon script en prod :

[code]#!/bin/bash
#####if [ $SQL != “information_schema” ] && [ $SQL != “performance_schema” ] && [ $SQL != “mysql” ] && [ $SQL != “phpmyadmin” ] && [ $SQL != “Database” ]; then

#date du jour
DATE=date +%y_%m_%d

#liste des dossier
LISTEBDD=$( echo ‘show databases’ | mysql -ubackup -pMOTDEPASSE)

#on boucle sur chaque dossier (for découpe automatiquement par l’espace
for SQL in $LISTEBDD

do

if [ $SQL != “information_schema” ] && [ $SQL != “performance_schema” ] && [ $SQL != “mysql” ] && [ $SQL != “Database” ]; then

#echo $SQL
mysqldump -h localhost -u backup -pMOTDEPASSE $SQL > /home/backup/save/mysql/$SQL.sql

fi

done
[/code]

J’ai crée un user spécial “backup”, qui a le droit de lock les tables (toutes) et je crois que c’est tout. Comme tu remarques, il mets tout dans le répertoire “/home/backup/save/mysql/NOMBDD.sql” après soit tu transfert comme ca , soit tu fais une archive du répertoire et voila.

Voici le script que j’ai exécuté ce matin. Toujours sans succès :

#!/bin/bash

on se place dans le repertoire ou l’on veut sauvegarder les bases

cd /root/scripts/backups/

for i in mon_site mon_forum mon_blog; do

Sauvegarde des bases de donnees en fichiers .sql

Récupère toutes les bases de données

databases=mysql --user=root --password=monpass -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)" $i > ${i}_date +"%Y-%m-%d".sql

Compression des exports en tar.bz2 (le meilleur taux de compression)

tar jcf ${i}date +"%Y-%m-%d".sql.tar.bz2 ${i}date +"%Y-%m-%d".sql

Suppression des exports non compresses

rm ${i}_date +"%Y-%m-%d".sql

done

Lorsque j’exécute le script je n’ai aucun message d’erreur, mais la sauvegarde ne s’effectue pas.

Est-ce qu’il ne faut pas mettre des guillemets ou des quotes au niveau des mots de passe et du login user ?

Merci encore pour votre aide.

Frédéric

Salut,

Tu sembles rencontrer bon nombre de souci vis-à-vis de ce script.

Dans “l’urgence” tu pourrais peut-être de reporter sur MySQLDumper munit d’une interface.

Via, un virtualhost en 443 et en interdisant tout autre ip que celle que tu prendras soin de renseigner.

Très simple à mettre en application, il te suffit d’un sous-domaine pour ce faire.

Bonjour,

Merci à tous pour vos réponses. Je vais essayer de faire fonctionner le script proposer par Kristy.

Je vous tiendrai informé de la suite des événements.

Frédéric