Réaliser un backup automatique de vos bases de données MySQL

Votre site fonctionne bien en ce moment ? Tant mieux, mais avez-vous déjà vécu un crash de données ? Un blocage de la base, la perte d’informations ? Mieux vaux se prévenir avant que le drame se produise.

Backup MySQL

Même les professionnels perdent leurs données

Le scénario est toujours le même… c’est toujours lors d’un crash des données ou une perte d’information qu’on se dit… « Mais ou sont les backup ? », « Qui devait le faire ? », « Avaient-ils été testés ? ». On n’a jamais le temps pour tester les sauvegardes, car on a toujours mieux à faire pourtant mieux vaut prendre les précautions nécessaires.

Personne n’est à l’abri, une mauvaise manipulation… une mauvaise requête SQL et vous pouvez faire crasher votre entreprise. Il est vrai qu’actuellement les hébergeurs disposent de sauvegarde, mais celle-ci ne sont pas toujours « faciles » à obtenir et parfois le fait de devoir remonter à quelques jours en arrière peut vous faire perdre beaucoup de temps à la réactualisation des données.

Un script PHP pour effectuer des backup

Pour cela il vous suffit de créer un dossier « backups » à la racine de votre site / boutique et dans ce dossier vous allez créer un fichier « cron.php » avec le contenu ci-dessous. Attention, il est important que votre serveur accepte l’exécution de la commande « exec » il se peut qu’elle soit désactivée sur votre serveur. Si c’est le cas, renseignez vous auprès de votre hébergeur pour voir si cette fonction est activable.

Télécharger

En début de fichier il suffit de configurer les 4 variables pour la connexion à la base de données. Si vous avez besoin de sauver plusieurs base de données alors vous pouvez activer les lignes juste en dessous en commentaire et ensuite configurer la deuxième base. Vous pouvez ajouter un nombre de bases de données illimitées à sauver, il suffit juste d’ajouter de nouveaux éléments dans le tableau.

Ensuite, il suffit d’exécuter l’url suivante :

http://www.votresite.com/backups/cron.php?token=1234

pour lancer la génération des sauvegardes. Il faut donc créer une tâche planifiée qui va exécuter cette url par exemple plusieurs fois par jour, afin de toujours disposer de sauvegardes récentes.

Enfin des sauvegardes SQL qui sont réalisées automatiquement. A présent il n'y a plus rien à craindre ou presque.
Enfin des sauvegardes SQL qui sont réalisées automatiquement. A présent il n’y a plus rien à craindre ou presque.

Maintenant il faut penser à mettre un « .htaccess » dans le dossier, pour éviter que quelqu’un puisse accéder aux fichiers via une url et ainsi récupérer votre base. Pour cela il suffit de mettre dans le dossier « backups » un fichier « .htaccess » avec le contenu ci-dessous.

Télécharger

Pour ceux qui désirent télécharger directement les fichiers sources, vous pouvez télécharger le fichier d’exemple de backup MySQL.

Aspirer votre FTP au complet

Ensuite vous aurez donc sur votre FTP, tous les fichiers de votre site et vos différentes bases de données. Le but est donc à présent d’aspirer régulièrement tout votre FTP sur vers serveur ou un disque dur local externe pour toujours disposer d’une sauvegarde valide.

Actuellement j’utilise toujours la solution « Cobian backup » (solution entièrement gratuite) pour récupérer tous mes fichiers du FTP, ce processus s’exécute durant la nuit et aspire la totalité du site. Vous pouvez vous référer à l’article suivant pour l’exemple de configuration pour la récupération de votre FTP.

Cobian Backup est une solution de sauvegarde gratuite, pourquoi s'en priver ? Je l'utilise depuis de nombreuses années déjà et il donne vraiment satisfaction.
Cobian Backup est une solution de sauvegarde gratuite, pourquoi s’en priver ? Je l’utilise depuis de nombreuses années déjà et il donne vraiment satisfaction.

Bilan

Ah mais pendant qu’on y pense… n’oubliez pas de « tester » aussi vos sauvegardes ! Bien sûr cela peut prendre quelques heures sur le mois, mais c’est tellement plus agréable que ça puisse fonctionner quand un imprévu arrive. Bien entendu les hébergeurs font les sauvegardes nécessaires, mais parfois c’est urgent et on a besoin des fichiers et de la base de données rapidement.

7 commentaires sur “Réaliser un backup automatique de vos bases de données MySQL”

  1. Salut,

    Il est primordiale de sauvegarder plusieurs fois son site, on parle de ecommerce avec PrestaShop, alors il serait dommage de tout perdre parce que l’hébergeur a un soucis ou après une attaque.

    J’avais fait un article sur un système externalisé à moindre coût et très simple à mettre en oeuvre.

    Et surtout, les données sont sauvegardées ailleurs ce qui permet de restaurer son site rapidement sur un autre hébergement au besoin. http://www.mediacom87.fr/nouvelle/post/sauvegarde-automatique-site

    1. Hello,

      Effectivement il est plus sage d’anticiper, mais bien souvent on pense à le faire quand c’est trop tard.

      Merci d’avoir partagé l’information sur ce service, je ne connaissais pas… à expérimenter à l’occasion.

      A bientôt !

  2. Le scripte ne fonctionne pas avec mes base de données mySQL

    $database[0] =’test’;
    $user[0] =’root’;
    $pass[0] = »;
    $server[0] =’localhost’;

    Le message d’erreur :
    Il y a eu un message d’avertissement durant l’export de la base C3dro vers C3dro_2018-03-02-09-36-19.gz

    Merci pour votre aide.

    1. Hello,

      Difficile de répondre à ce point, j’avais fait ce script un peu expérimental (qui avait fonctionné pour moi)… mais peut-être que vous avez avantage de chercher un autre script sur le web, plutôt que de débuguer celui-ci.

      A bientôt !

  3. ca fonctionne bien mais on se retrouve avec un stockage qui ne cesse de grossir j’ai essayer plusieur technique cron dont

    Mais ca me renvoie un erreur 404.

    Je pense qu’il serait interessant de pouvoir supprimer les anciennes version au fur et a mesure

  4. Bonjour
    Ce script m’intéresse, surtout après les incendies OVH (je suis ailleurs, mais cela sert de leçon). Juste une question: où se retrouve le fichier résultat? Le cron me dit que tout s’est bien passé, que le fichier est créé, mais je ne mets pas la main dessus.
    Merci!!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *