backup journalier de ma base de données en php

a marqué ce sujet comme résolu.

Bonjour à tous j’aimerais faire 2 backup par jour de ma base de données mysql en utilisant les taches CRON.

J’ai fait quelque recherche et je suis tombé sur la fonction INTO OUTFILE et aussi je dois avoir le droit file pour pouvoir l’utiliser.

J’ai fouiller chez mon hébergeur et je n’ai pas trouvé ce droit file.

Merci pour vos réponses.

J’ai vue mysql dump mais est-il possible de sauvegarder certaines lignes uniquement ? c’est a dire pour ma table TABLE_NAME je sauvegarde de la ligne 50 à tout ce qui suit.

Et est-il possible de l’utiliser dans une tache cron pour automatiser tous ?

Merci de m’eclaircir de mon côte je vais aussi chercher.

Bien sûr, toute commande bash est exécutable dans cron.

Pour ne stocker que certaines lignes, oui c’est possible mais c’est très étrange. Pourquoi veux-tu faire ça ? À moins que ta BDD ne soit gigantesque, ce n’est pas une bonne idée de faire ça. Parce que le jour où tu voudras recréer ta BDD à partir de ta sauvegarde, il te manquera des lignes.

Quoi qui en soit, c’est possible de rajouter des conditions avec --where.

Par exemple, tu peux faire ça : mysqldump --user monUsername --databases nomDeLaBase --tables nomDeLaTable --where "1, OFFSET 50" --defaults=/chemin/vers/.my.cnf > destination.sql

le fichier .my.cnf est un fichier de config que tu peux créer où tu veux (il faut juste renseigner le bon chemin absolu dans la commande ci-dessus), et dans lequel tu rajoutes [mysqldump] password=monMotDePasse

La commande que je t’ai donnée crée un backup de nomDeLaBase.nomDeLaTable (sauf les 50 premières lignes) dans destination.sql. Cela dit, en général, on crée un backup de toute la base d’un coup, non seulement c’est plus rapide mais en plus c’est beaucoup plus simple : mysqldump --user monUsername --databases nomDeLaBase --defaults=/chemin/vers/.my.cnf > destination.sqlcrée un backup de toutes les tables denomDeLaBase`.

Maintenant il faut créer un script autour de ça pour que les nouvelles sauvegardes n’écrasent pas les anciennes (vu que dans le cas présent chaque backup est sauvegardé dans le même fichier).

En suite on rajoute ça dans la crontab.

Tu as un tutoriel, qui utilise des backups incrémentaux, attention c’est plus compliqué à utiliser, donc préfère utiliser la commande mysqldump que je t’ai montrée ci-dessus à la place. https://zestedesavoir.com/billets/2462/les-sauvegardes-de-zeste-de-savoir/

+1 -0

Merci @melepe je veux stocker certaines lignes car ma base de données est normalement vouées à grandir un peu rapidement.

Mais je peux très bien combiné les deux pour un résultat très bien, merci déjà.

password=monMotDePasse : C’est le mot de passe de mon Cpanel qu’on me demande lors de ma connexion?

userName : C’est le login de ce même compte c’est ça?

Merci

+0 -0

Ce sont les login et mot de passe de ta base de données, qui sont probablement différents de tes identifiants pour accéder à l’interface d’administration. Ils t’ont été donnés quelque part par ton hébergeur.

Edit : cela dit je ne sais pas ce que tu appelles rapidement, mais je dirais que tant que ta BDD fait moins de quelques dizaines de MiB tu n’as pas besoin de t’en faire. Si par la suite ta BDD grossit, il faut plutôt se tourner vers les backups incrémentaux, comme dans le tutoriel que je t’ai donné.

C’est beaucoup plus pratique que la solution que tu as conçue, et surtout, il y a plein d’outils qui ont été pensés pour. :)

+0 -0

Je reviens sur ce sujet parce que je viens de me procurer un serveur dédié. J’aimerais savoir lorsque mysqldump est lancé est ce mes utilisateurs pourrons toujours posté des messages et aussi voir d’autres messages?

Je veux juste savoir si mysqldump bloque la lecture et l’écriture lorsqu’elle est lancé?

Merci à vous

Salut,

par défaut, il me semble que mysqldump utililse --opt qui lui-même est un alias pour, entre autre, --lock-tables, donc la réponse est oui.

Cependant, dumper la base de données n’est pas bien long (si la BDD n’est pas gigantesque), et si tu lances le backup à une heure de faible fréquentation de ton site (mettons 3 heures du matin), le risque que ça impacte un utilisateur est minimal.

Si vraiment tu veux laisser les gens pouvoir écrire dans la BDD en même temps, tu peux utiliser --skip-lock-tables. Mais tu risques d’avoir des incohérences dans le dump, même si le risque est faible (vu qu’il faut que quelqu’un lance pile une transaction qui affecte pile les mauvaises tables pile au mauvais moment).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte