Back-up MySQL
Catégorie : La base de données

Sauvegarde des bases MySQL des serveur web (PHP+Mysql)

Auteur : R&B
WDForge.org

Introduction

Déjá traité lors d'une premiêre édition, le sujet des sauvegardes des bases SQL des sites internet se doit de n'être laissé au hasard.
Si l'on peut faire confiance aux hébergeurs, il est trés utile de toujours avoir á disposition une copie de ses données.
Ainsi, lors du changement de notre solution d'hébergement des limitations de sécurité rendaient inutilisable le script db_backup.
Nous avons donc du reprendre notre quête de solution.
Notons l'objectif de nos recherche :
• Assurer une sauvegarde automatique des bases SQL du serveur web.
• Acheminer la sauvegarde sur le poste du webmaster
• Faire en sorte que la sauvegarde puisse être remontée sur le serveur via une procédure simple.
Nous avons donc trouvé une solution. Mais elle comporte un inconvénient de taille : l'outil de sauvegarde, bien qu'absolument adapté á notre besoin est payant (60 US$).

La sauvegarde

Pour assurer la sauvegarde nous utilisons Backup Watcher for MySQL édité par DSWSoft.
Il s'agit d'un exécutable Win32 autorisant la connection aux bases MySQL via TCP/IP (si l'accès au serveur MySQL est disponible directement) ou via HTTP (en passant par un script de connection en PHP á déposer sur le serveur).
Nous utilisons le second mode de connexion.
Une fois téléchargé et installé Backup Watcher se charge en tant que résident dans la barre des tâches

Ouvrir le menu contextuel du résident et choisir 'Show' pour afficher la fenêtre
La fenêtre présente la liste des sauvegardes.
Créer une nouvelle sauvegarde via le menu.
L'assistant propose la sélection d'un mode de compression,
" Next > " pour continuer

Au message d'erreur,
Pour la base, utiliser le bouton de sélection,

…ajouter le nom de votre base et valider
La base est sélectionnée
Reste á entre les paramêtres de connexion á la base : user et mot de passe pour terminer avec " Finish "
Voilá, la sauvegarde est ajoutée,
Encore une paire de petites choses…

Dans le répertoire script de l'outil vous trouverez le fichier mysql_backup.php á envoyer sur votre serveur á la place prévu dans le paramétrage de votre sauvegarde.
Il est aussi possible de paramétrer la destination de la sauvegarde
Enfin, utiliser le " scheduler " pour programmer l'exécution de la sauvegarde ou continuer á la lancer en manuel.
Il est possible de vérifier l'heure de la prochaine exécution

Le fichier obtenu est parfait pour l'outil de restauration que l'on va utiliser.
En effet, les insertions dans les tables sont décrites lignes á lignes. Cette condition est capitale pour les table á contenu importtant oùcertain outil proposent un unique INSERT pour tout le contenu, dépassant alors systématiquement soit le délai d'exécution MySQL, soit la limite mémoire allouée á une session PHP.
De fait la multiplication des INSERT par lignes permet alors un grand nombre de requetes mais dont on est sûr que chacune passera sur le serveur.

Attention, il y a une limite :
Backup watcher génêre une requete de création de base au début de script généré, il faut penser á la supprimer avant de la poster sur le serveur pour la restauration..
Limite outre passée via un paramétrage précis de la version 1.8.

La restauration

BigDump est le script révé pour importer rapidement les bases de taille respectables.
Dans notre cas, le fichier SQL dépasse les 8 Mo qui représente la limite mémoire d'une session php. Il est impossible de le charger en mémoire et de le parcourir ligne á ligne. BigDump, par une lecture en blocs (de taille paramétrable) s'affranchit de cette limite.
Ainsi, si le script SQL est formaté pour des insert par lignes, BigDump va exécuter chaque requete en bouclant sur une lecture du fichier par blocs.

Coté configuration, c'est assez élémentaire.

Remplir le nom de la base, le user et son mot de passe et spécifier le chemin du fichier SQL á traiter.
La restauration des données activant une capacité d'écriture nous vous invitons á envoyer sur le serveur le SQL et BigDump dans le même répertoire et en même temps. Inutile de laisser sur le serveur un tel script.

L'exécution est alors extrêmement simple : il suffit de pointer l'adresse du script sur le serveur :
http://VotreSite.com/chemin//bigdump.php et démarrer l'import des données



<a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/" title="Licence, certains droits réservés"><img src="http://www.frxoops.org/images/cdr_bouton.gif" alt="Licence, certains droits réservés" /></a>