Bienvenus à tous dans le forum SEO de la famille de liens internes, la convivialité est le maître mot de ce forum, partage, bons plans, aides et conseils sur tout ce qui touche le référencement, l'édition et le développement sont de mises sur ce forum.
Le forum liens internes est axé sur le référencement naturel SEO et dans l’aide apporté à la création de sites et des métiers du web
Chacun à sa place dans la famille, du débutant au professionnel averti, alors venez partager et discuter avec les membres de la grande famille des professionnels du web
annuaire et annonce santé




Information et conseil sur les techniques de développement, PHP, MYSQL, CSS, HTML

Programmation et langage sur le développement de site, les explications des différentes techniques du web pour la création de votre site, les conseils, les trucs et astuces, vous avez une question, aucune hésitation venez vous renseignez par ici et partagez avec d'autres votre savoir et vos conseils.
3 messages • Page 1 sur 1

[Tuto] Automatiser la sauvegarde d'une BDD avec cron tab ?

Messagepar Armen » Jeu 11 Juil 2013 22:59

Maintenant que vous savez comment automatiser le lancement d'une tâche, je vais vous expliquer comment sauvegarder une base de données. Ils existent plusieurs méthodes, je vais dans ce tuto vous décrire la première. Elle consiste à utiliser les commandes unix, je commence par celle qui nécessite le moins de travail de programmation.

Sauvegarde en mode commande unix

Vous allez faire excuter des lignes de comande unix à votre crontab. Mais avant de faire une sauvegarde, vous devez connaître l'utilitaire mysqldump qui la plupart du temps est installé sur votre serveur. Celui-ci permet d'exporter une base ou un groupe de bases vers un fichier texte, pour la sauvegarde ou le transfert entre deux serveurs. L'export contiendra les requêtes SQL nécessaires pour créer la table et la remplir.

Comment fonctionne mysqldump

Cette fonction doit être lancée en mode console unix, cela tombe bien puisque le cron tab permet de lancer des commandes sous unix. Voici la synthaxe

mysqldump -h localhost -u USER DATABASE -pPASS --all-databases > CHEMIN/sauve_db.sql

ou

mysqldump -h localhost -u USER DATABASE -pPASS nom_base > CHEMIN/nom_db.sql

Si vous spécifiez –all-databases, toutes les bases de données de mysql seront sauvegardées dans le même script. Si vous travaillez avec une seule base de données, c'est bien. Mais je vous conseille de faire une extraction par base de données, ainsi vous aurez un script sql par bd, c'est plus utile en cas de rechargement.
Prenons l'exemple d'une base de données nommée bd1, cela donne :

mysqldump -h localhost -u USER DATABASE -pPASS bd1 > CHEMIN/bd1.sql

USER DATABASE doit être remplacé par le nom d'utilisateur que vous avez créer pour votre base de données.
PASS est le password utilisé pour la connexion de votre utilisateur à la base de données.
Cette commande va vous créer un fichier bd1.sql qui contiendra toutes les tables, objets et contenus de votre base de données bd1.

Maintenant, je vous livre trois lignes de commandes uniquement pour la sauvegarde de votre base, voici l’enchaînement, qui je l'espère vous facilita la vie.


mkdir /CHEMIN/mysqlbackup ;
mysqldump -h localhost -u
USER DATABASE - NOM_BASE > /tmp/mysqlbackup/`date '+%F'`.NOM_BASE.sql ;
rm /
CHEMIN/mysqlbackup/`date '+%F' --date '1 weeks ago'`.NOM_BASE.sql;

Vous copiez ces trois lignes dans la ligne 'tâche' de votre table cron.

* 1 * * * mkdir /CHEMIN/mysqlbackup ;
mysqldump -h localhost -u USER DATABASE -pPASS NOM_BASE > /tmp/mysqlbackup/`date '+%F'`.NOM_BASE.sql ;
rm /CHEMIN/mysqlbackup/`date '+%F' --date '1 weeks ago'`.NOM_BASE.sql;
> /dev/null

Vous n'oubliez pas de remplasser les majuscules par vos variables. Et voilà, chaque jour pendant que vous écrirez dans des Cp ou des annuaires, votre base de données sera sauvegardée à 1 heure du matin automatiquement. ;) :D

USER DATABASE : nom d'utilisateur de la base
PASS : Password du nom d'utilisateur de la base
NOM_BASE: nom de la base sur votre serveur Mysql
CHEMIN : nom du chemin où se trouve votre nom de domaine. Attention si CHEMIN a été donné par le script PHP ci-dessous, il contient déjà le premier antislash. ;)


Comment connaitre le chemin d'accès à mon dossier publique ?

A ce niveau, se pose la pemière interrogation, il faut que vous connaissiez l'arborescence de votre serveur unix, afin de créer le répertoire à partir de la racine. Si vous ne le connaissez pas, je vous livre le programme en php pour l'afficher.

Vous placez les lignes ci-dessous dans un fichier que vous nommez chemin.php et vous stockez sur votre serveur par ftp. Ensuite vous executez votre programme. il vous affiche le chemin d'accès à votre répertoire auquel il suffit d'ajouter votre répertoire de sauvegarde, n'oubliez pas le /.

<?PHP
exec ('pwd',$rep); // stocke le répertoire courant où se trouve le programme de sauvegarde dans $rep
echo "chemin d'acces a votre repertoire : ".$rep[0];
?>


Quelques explications sur les commandes unix ?

Je vous explique la première ligne sert à créer le répertoire de sauvegarde, ne vous inquiétez elle renverra un code erreur dès la seconde exécution, puisque elle ne sera utilisée que lors du premier lancement. Ce n'est pas grave.
La deuxième ligne sert si vous avez bien suivi à effectuer la sauvegarde de votre base de données, mais la redirection mérite quelques explications.
/tmp/mysql_backup/`date '+%F'`.NOM_BASE.sql

'date' est remplacée par la date système de votre serveur au moment de l'execution de la commande.
%F full date; renvoie la date sous la forme %Y-%m-%d

Vous allez donc optenir une sauvegarde journalière avec un fichier en sortie nommé :
AAAA-MM-JJ.NOM_BASE.sql

Vous n'aurez aucune excuse pour ne pas prendre la bonne sauvegarde. ;)
Pour finir la dernière commande
rm /CHEMIN/mysqlbackup/`date '+%F' --date '1 weeks ago'`.NOM_BASE.sql;

Elle va supprimer toutes les sauvegardes supérieures à 7 jours, ainsi vous n'allez pas m'appeler pour avoir saturé le disque dur de votre serveur unix. ;)

Pour la deuxième option je vais laisser mon clavier refroidir et je vous livre les grands principes de lancement d'une sauvegarde en mode php.

Car je ne vous ai pas tout dit, le cron tab permet également de lancer des scripts php, en effet on pense souvent que le php ne sert qu'à créer des pages dynamiques en html, c'est vrai mais il ne sert pas qu'à cela. En effet on peut lancer des scripts php en CLI. PHP CLI est installé pratiquement sur tous les serveurs unix et windows.

Qu'est-ce que PHP CLI ? PHP CLI est une abréviation de PHP interface de ligne de commande.

Donc si vous souhaitez effectuer votre sauvegarde en php, il suffira à la place des lignes précédentes de mettre une ligne de la forme

* 1 * * * php -f /CHEMIN/save_base.php > /dev/null

Attention les tâches cron s'executant en mode console, vous ne verez rien s'afficher, vous devez donc programmer votre script comme un batch sans affichage.

PS: si j'ai commis quelques erreurs dans mon tuto, merci de me les préciser pour le confort d'utilisation de tout le monde. Bon courage et bonne sauvegarde. ;)

Bon désolé, je suis toujours un peu technique, déformation professionnelle. ;)
Mais n'hésiter pas à poser des questions, ces thèmes sont malheureusement peu expliqués car très techniques, alors si vous n'utilisez pas de plugins dans vos CMS, ou si vous souhaitez simplement, automatiser ces tâches facilement (enfin presque. ;) ), essayer vous avec cette procédure.

Attention dans le développement, il est toujours utile de comprendre avant de copier les lignes de procédure.
Une maison d'hôtes dans le Finistère, dans le triangle Audierne - Plouhinec - Pont-Croix, c'est par ici.
Avatar de l’utilisateur
Armen
 
Messages: 42
Inscription: Ven 14 Juin 2013 10:23


annuaire et annonce santé

Re: [Tuto] Automatiser la sauvegarde d'une BDD avec cron tab

Messagepar sorcierenat » Ven 12 Juil 2013 05:49

+100000000000000 bon à présent je vais aller embêter Yoda pour aller voir ça de plus près Un grand merci pour ce partage :D :D
Avatar de l’utilisateur
sorcierenat
Administrateur du site
 
Messages: 3263
Inscription: Ven 14 Juin 2013 09:25

Re: [Tuto] Automatiser la sauvegarde d'une BDD avec cron tab

Messagepar buldozer » Ven 12 Juil 2013 16:14

Salut,
merci pour le tuto.
http://www.liens-internes.com/author/buldozer/ : pour avoir un aperçu de mes sites
Avatar de l’utilisateur
buldozer
 
Messages: 664
Inscription: Ven 14 Juin 2013 10:25


3 messages • Page 1 sur 1

Retourner vers PHP, SQL, CSS, HTML

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

>

cron