Aller au contenu

Recherche scripts / conseils pour backup MySQL


Sujets conseillés

Posté

Bonjour,

J'aimerais avoir votre avis sur ce qui convient d'utiliser ou de faire (compressé ? et si oui à quel format etc.) pour des backups réguliers de quelques bases de données, dont une un peu lourde ?

Et si vous connaissez un bon script ou programme pour ça :)

Merci d'avance

PS : backup sur le même serveur sur le même disque (pour le moment)

Posté

Salut Vespa,

Tout simplement avec mysqldump... en mettant les bons paramètres tu peux tout sauver rapidement,

Sur le Hub j'utilise ceux-ci toutes les 3 heures:

mysqldump -u$USER -p$PASSWORD -e -q -Q --add-drop-table $i | gzip > $LOCALDIR/$i.sql.gz

Il faut définir les variables USER, PASSWORD et LOCALDIR, et c'est tout bon :)

Posté

Merci Dan pour cette information :)

Lorsque tu dis qu'il faut définir les variables, c'est comme en php ?

$USER = "TOTO";

Et il y a un moyen de lui dire pour quelle base de donnée on souhaite la sauvegarde ?

Et le script il n'y a pas d'extension particulière à lui donner comme par exemple : backup.PHP ?

Désolé pour ces questions de novice :blush:

Posté

Désolé, j'oubliais la variable $i qui chez moi contient le nom de la base...

Tu peux simplement faire, dans ton cas:

USER="root"
PASSWORD="mot_de_passe"
BASE="nom_de_la_base"
LOCALDIR="/home/mon_repertoire"
mysqldump -u$USER -p$PASSWORD -e -q -Q --add-drop-table $BASE | gzip > $LOCALDIR/$BASE.sql.gz

Ce sera plus parlant pour toi. Tu mets ces lignes dans un fichier texte que tu nommes par exemple backup.sh

Tu changes les droits avec "chmod =x backup.sh"

Puis tu peux le lancer avec ./backup.sh ou avec backup.sh s'il est dans un répertoire couvert par ton $PATH.

Si tu veux en faire une fonction qui permet de sauver toutes tes bases au choix, tu remplaces:

BASE="nom_de_la_base"

par

BASE=$1

et appelles le script par "./backup nom_de_la_base"

Posté

Merci Dan pour cette explication très clair ;)

Je vais essayer de mettre ça en place ce soir :)

  • 1 month later...
Posté

Pour "surfer" sur cette réponse, je souhaite automatiser la sauvegarde.

Dan > Ou faut il mettre le bout de code que tu as mis ci dessus pour que cela mardche correctement ?

Merci d'avance ;)

Posté

Bonjour,

Tu peux mettre ce code dans un fichier texte, en mettant ceci comme première ligne:

#!/bin/bash

pour forcer l'interprétation par bash.

Ensuite, tu le rends exécutable avec "chmod +x nom_du_fichier

Et tu appelles ce fichier dans le crontab aux dates et heures de ton choix.

Dan

Posté (modifié)

Un petit détour en passant : Quelqu'un aurait-il un script (shell ou php) qui permettrait de faire la synchronisation de 2 répertoire (local vers distant) par FTP ?

Le but n'est pas d'uploader tous les fichiers à chaque fois mais que les nouveaux. Il faut aussi effacer du répertoire distant les fichiers n'existant plus en local.

rsync ne m'intéresse pas car je n'ai accés au répertoire distant que par FTP...

Merci d'avance,

Benoit

Modifié par fuleran
Posté
Bonjour,

Tu peux mettre ce code dans un fichier texte, en mettant ceci comme première ligne:

#!/bin/bash

pour forcer l'interprétation par bash.

Ensuite, tu le rends exécutable avec "chmod +x nom_du_fichier

Et tu appelles ce fichier dans le crontab aux dates et heures de ton choix.

Dan

<{POST_SNAPBACK}>

Dans ce cas là, ton backup est sur ton dedié, et si on te le pirate t'es HS.

Tu as un script pour faire un ftp sur un autre server ou PC?

Tboh

Posté
Un petit détour en passant : Quelqu'un aurait-il un script (shell ou php) qui permettrait de faire la synchronisation de 2 répertoire (local vers distant) par FTP ?

Les deux sont sous Linux, ou tu as une machine windows en local ?

Posté
Dans ce cas là, ton backup est sur ton dedié, et si on te le pirate t'es HS.

Tu as un script pour faire un ftp sur un autre server ou PC?

Si on le pirate, ou même si le disque dur lâche... :(

Ce n'est à mon avis qu'un "backup du pauvre", qui serait déjà mieux sur un disque secondaire (on peut démonter la partition entre les backups)

Posté
Les deux sont sous Linux, ou tu as une machine windows en local ?

<{POST_SNAPBACK}>

Les deux sont sous linux mais je n'ai accés qu'à la machine locale. Le serveur de backup m'est fourni par l'hébergeur avec juste un compte FTP.

Il me faut donc un script à installer sur mon serveur qui va se connecter au serveur FTP de backup et "uploader" les fichiers locaux (avec synchro).

Merci d'avance,

Benoit

Posté

Fast WebPage Exchanger (Weex) permet de synchroniser un repertoire ftp avec un repertoire local. Il permet de paramétrer plusieurs sites en détail (eviter tels fichiers, ignorer ces répertoires...) Le develloppement est arrêté mais on peut encore trouver weex sur le web.

Sinon, il y a aussi lftp qui peut s'utiliser en ligne de commande et a un mode "mirror" (dans les deux directions)

Dan

  • 2 semaines plus tard...
Posté

Je viens de mettre en place ce script sur mon dédié et ça à l'air de fonctionner par contre est ce que quelqu'un saurait faire pour que le lundi le backup se fasse dans "le repertoir du lundi", le mardi "dans le repertoire du mardi" afin de conserver toujours une semaine de backup minimum ?

  • 1 month later...
Posté

Merci beaucoup, c'est très utile, et ca fonctionne à merveille.

J'ai fais en .sh, et avec base=$1

Comment fais t'on l'opération inverse, dans le meme style.

Cordialement.

Posté

Bonjour,

Lors d'un dump mysql, et celui via phpmyadmin, les 2 fichiers sont bien différents, tout les 2 en .sql:

-celui via mysql fait par ex 1292ko

-celui via phpmyadmin fait 4169ko

De plus mon fichier fait par shell via un dump mysql semble ne pas fonctionner lorsque je souhaite l'importer avec phpmyadmin.

C'est pour cela que je repose ma question:

-Comment fait on en ligne de commande shell pour réimporter le dump par dessus les anciennes bases ?

Merci,

cordialement.

Posté

Bonjour,

La différence de taille peut s'expliquer par le fait que mo script utilise gzip, alors que phpMyAdmin a sa propre version. Mais peut-être n'as-tu même pas demandé de compression.

Pour recharger en base de données un fichier gzippé comme celui généré par ce script, il suffit d'une ligne de commande:

zcat fichier.sql.gz | mysql -uroot -pmot_de_passe nom_de_la_base

En remplaçant les mots en gras ci-dessus par les bonnes valeurs.

Dan

  • 1 month later...
Posté (modifié)
Bonjour,

La différence de taille peut s'expliquer par le fait que mo script utilise gzip, alors que phpMyAdmin a sa propre version. Mais peut-être n'as-tu même pas demandé de compression.

Pour recharger en base de données un fichier gzippé comme celui généré par ce script, il suffit d'une ligne de commande:

zcat fichier.sql.gz | mysql -uroot -pmot_de_passe nom_de_la_base

En remplaçant les mots en gras ci-dessus par les bonnes valeurs.

Dan

Bonjour,

est ce qu'il est possible d'envoyer ce backup à une boite mails ?

aussi comment ajouter la variable $host ds ce code

USER="root"
PASSWORD="mot_de_passe"
BASE="nom_de_la_base"
LOCALDIR="/home/mon_repertoire"
mysqldump -u$USER -p$PASSWORD -e -q -Q --add-drop-table $BASE | gzip > $LOCALDIR/$BASE.sql.gz

merci

Modifié par grazianno
Posté
comment ajouter la variable $host ds ce code

USER="root"
PASSWORD="mot_de_passe"
BASE="nom_de_la_base"
LOCALDIR="/home/mon_repertoire"
mysqldump -u$USER -p$PASSWORD -e -q -Q --add-drop-table $BASE | gzip > $LOCALDIR/$BASE.sql.gz

merci

Tout simplement avec une ligne telle que:

HOST=nom.du.host

et en ajoutant -h$HOST dans la ligne d'appel de mysqldump.

Pour l'envoyer par mail, il faut envoyer le fichier généré comme pièce jointe, tout simplement

Guest Albert_H
Posté

Merci Dan pour ces precieuses infos :)

Juste une demande de precision, peux tu faire ton dump sur un ftp?

C est encore mieux de sauvegarder physiquement ailleurs que sur le serveur lui meme :)

Posté
Merci Dan pour ces precieuses infos :)

Juste une demande de precision, peux tu faire ton dump sur un ftp?

C est encore mieux de sauvegarder physiquement ailleurs que sur le serveur lui meme :)

Tu peux faire le dump en local et le transférer ensuite sur un ftp.

Alternative: copier le dump créé sur un autre serveur avec scp (nécessite accès au shell et clé ssh)

Merci Dan.

je voudrai aussi savoir si je peux faire le backup d'un dossier de la même maniere

Pour backuper un dossier, il faut par exemple créer une archive avec "tar". Ensuite, copier cette archive où tu veux (email, autre serveur...)

Dan

Posté
Pour backuper un dossier, il faut par exemple créer une archive avec "tar". Ensuite, copier cette archive où tu veux (email, autre serveur...)

Dan

Tu peux me donner stp le code pour créer l'archive avec tar ?

merci

Posté

Bonjour,

Pour archiver le dossier "test"

tar cvf nom_de_l_archive.tar test

mais la syntaxe peut, je crois, légèrement varier selon ton système.

Pour en savoir plus, lance la commande :

man tar

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...