Il faut planifier une sauvegarde de toute la base de données et des fichiers envoyés par les utilisateurs. Il est inutile de sauvegarder dans cette procédure les codes sources du site, les images et les styles puisque vous devez avoir la version de recette de votre site, comportant ces fichiers, en utilisant une autre procédure de sauvegarde, orientée projet (telle que SVN ou Git).
En ce qui me concerne, j'utilise un CRON système qui appelle l'ordonnanceur de tâches de mon CMS. L'ordonnanceur priorise certaines tâches par rapport aux autres, en les enchaînant si nécessaire. Certains CMS comme Wordpress ont leur propre ordonnanceur de tâches, qui est déclenché par la visite d'une personne sur le site. Le fonctionnement est similaire sauf que le processus d'exécution ne se fait pas en parallèle ni exactement à l'heure prévue.
La tâche doit être paramétrée pour une date de lancement au moins journalière et à une heure où l'on estime qu'il y a peu d'utilisateurs afin de ne pas les gêner. Je recommande par exemple des sauvegardes très tôt le matin car c'est souvent là qu'il y a le moins de visiteurs.
Le système doit permettre la restauration rapide et facilement du site. Pour mon usage, j'ai créé une routine qui parcourt toutes les tables d'une base de données, récupère les champs de celles-ci puis crée les instructions de restauration. L'ensemble des instructions est ensuite enregistré dans un fichier SQL présenté comme ci-dessous :
Les instructions SQL générées de cette manière permettent de récupérer tout ou partie des valeurs d'une table, en copiant seulement les lignes intéressantes si l'import est partiel. Il faut cependant coder aussi la restauration de la base car si jamais la table est volumineuse, le moteur SQL ne pourra insérer toutes les lignes en une seule fois (il y a une limite sur la taille d'une instruction SQL).
Je vous oriente vers un autre article permettant de sauvegarder une base de données MySQL : Sauver et restaurer rapidement sa base MySQL
Le fichier de sauvegarde pouvant être volumineux, il est utile de le compresser avec le taux le plus efficace. S'il s'agit de code SQL, les gains peuvent être très importants, permettant ainsi de stocker davantage de sauvegardes. Le nom de l'archive ainsi créée peut être au format "AAAA-MM-JJ HH-MM-SS nom du site" afin d'identifier tout de suite les sauvegardes les plus récentes.
Une purge de ces archives doit être faite pour ne pas encombrer le serveur inutilement : à la fin du code de sauvegarde, si tout s'est bien passé, je supprime les sauvegardes les plus anciennes pour n'en garder qu'un certain nombre, cela peut être sur une semaine, un mois... Tout dépend du site Internet, selon qu'il soit très utilisé ou pas.
La sauvegarde doit être faite vers un autre serveur, afin d'anticiper une perte complète des données du serveur. Si on n'en dispose pas, on peut sauvegarder sur le serveur lui même et lancer une tâche planifiée sur son propre PC, sur un NAS ou vers un hébergement tiers pour récupérer régulièrement les sauvegardes. Il faudra aussi dans ces cas-là gérer une purge des fichiers les plus anciens. L'avantage de cette technique est aussi d'avoir de la redondance de sauvegarde.
J'ai écrit le script PHP ci-dessous pour récupérer les sauvegardes d'un ensemble de sites depuis un accès HTTPS. Il faut le modifier pour indiquer l'adresse renvoyant la dernière sauvegarde (celle-ci doit être en mesure de vous renvoyer le fichier de sauvegarde compressé, tout en étant masquée des utilisateurs). On peut également préciser la durée de conservation des fichiers :
Pour le lancer, une tâche planifiée sur un NAS permet de ne plus s'en soucier :
Si la sauvegarde est importante et la redondance une sécurité, la restauration des données est également une chose à ne pas négliger : il faut pouvoir récupérer une sauvegarde rapidement ! La récupération d'une sauvegarde ne doit pas s'imposer comme une lourdeur administrative car quand on a besoin de restaurer, on est déjà pressé par le temps.
Sur mes sites, je gère la restauration d'une sauvegarde très simplement, en proposant dans le panneau d'administration une boîte déroulante listant les dernières sauvegardes, avec à côté le bouton "Restaurer". Au clic, celui-ci archive la base actuelle et restaure en quelques secondes la sauvegarde sélectionnée. L'algorithme de la procédure de restauration (sur MySQL) fonctionne en 2 parties :
Les hébergeurs proposent également de sauvegarder la machine ou la base de données. Il est intéressant de se renseigner sur cette option (souvent payante) mais la meilleure sauvegarde reste celle que l'on maîtrise et qui sait rester invisible.
RSS | Informations |