IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Faire un Backup MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut Faire un Backup MySQL
    Bonjour à tous,

    Disons que je veux faire un daily backup de ma database MySQL.

    J'ai XAMPP d'installé sur le poste. Il y a un dossier mysql et dans celui-ci un dossier MaBaseDeDonnée dans le dossier data (mysql/data/MaBaseDeDonnée).

    Est-ce que je peux faire un backup du dossier MaBaseDeDonnée. Et si je reveux la version du 21 janvier 2008, je copie/colle ce dossier en écransant la version courante. Est-ce une pratique normal (je suppose que non). Serait-il mieux d'arrêter le service mysql.exe avant de faire tout cela.

    Sinon qu'elle est une meilleur façon de procéder. Faire une job cron ne semble pas être une bonne solution, parce que je n'ai pas Linux, c'est sur windows.

    En gros, est-ce que je peux jouer avec les dossiers dans data/ de l'installation mysql.

    MErci!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    même sur Windows il y a les tâches planifiées (Démarrer / Paramètres / Panneau de configuration / Tâches planifiées).

    Du reste, mysqldump est beaucoup plus apte à ce genre de travail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump -upseudo -pmotdepasse basededonnees > c:\fichier.sql
    Cordialement,
    DaRiaN.

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Bonjour,

    Merci de la réponse, qui me montre une façon intéressante de faire le backup. Le problème est qu'il se peut que je ne puisse pas faire de tâches planifiés. Mais je vais quand même essayé, car je crois que c'est la/une meilleur manière de procédé.

    Sinon

    Est-ce que joué avec les dossiers Data peut être une façon possible de procéder.

    Merci!

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Bon, Changement de situation.
    Finalement je pourrais faire cette commande de mysqldump et je suis entrain de l'étudier.

    J'ai deux questions sur cette commande:
    1. Si on exécute cette commande, mais que quelqu'un fait un changement au même moment, est-ce que le backup sera ok? Donc finalement, est-ce que mysqldump "coupe" l'accès à la database pendant le backup, pour éviter de mélanger le tout.
    2. Quelle est la meilleur façon de restorer la database avec le fichier créé. PhPMyAdmin n'accepte pas les fichiers plus gros que 5 mo (malgré que l'on peut jouer dans les options de php pour arranger ça). A-t-il une belle commande du style mysqlrestore c:\fichier.sql ? Est-ce cela? mysql -uUser -pPwd db_name < backup-file.sql ?


    Merci beaucoup de votre aide.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Si vous examinez le fichier résultant vous verrez ce genre de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOCK TABLES `votre_table` WRITE;
    Pour l'autre chose, l'importation se fait via cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -upseudo -pmotdepasse basededonnees < c:\fichier.sql
    Si vous travaillez avec de gros fichiers, il faut penser à modifier la limite : max_allowed_packet sinon bonjour le MySQL server has gone away.

  6. #6
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Merci Darian,

    La réponse 2 répond très bien à ma question.

    Cependant, la première réponse
    Si vous examinez le fichier résultant vous verrez ce genre de ligne :

    Code :

    LOCK TABLES `votre_table` WRITE;
    Je voie effectivement que si je veux mettre mon backup dans ma database, ca lock les tables, ok.
    Mais ma question est plus: Si je fais la commande mysqldump et que le backup se créé Mais que en même temps quelqu'un fait une modification dans la database, est-ce qu'il y aura un problème. Donc, est-ce que je dois arrêter le service mysql en faisant mysqldump.

    mysqlhotcopy semble corriger ce problème (si problème il y a), mais mes tables on des InnoDB et MyISAM (ma database c'est celle de MediaWiki 1.11.0)

    Merci beaucoup.

  7. #7
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Si vous travaillez avec de gros fichiers, il faut penser à modifier la limite : max_allowed_packet sinon bonjour le MySQL server has gone away.
    Concernant ceci, où je peux vérifier cette variable

    à quel moment je doit penser à modifier la limite de cette variable.

    Tu dis "avec des gros fichiers", gros comment?

    Merci

  8. #8
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Je voie que sur cette page: http://dev.mysql.com/doc/refman/5.0/...too-large.html

    On a par défaut 1MB. J'ai effectivement 1MB dans mes settings de MySQL.

    Est-ce qu'avec un fichier .sql de 16mb et qui grandit toujours, je devrait agrandir la variable max_allowed_packet ?

    Ou c'est vraiment juste commande par commande que je dois considérer, donc si je n'ai pas de TEXT ou BLOB super gros, je suis correct.

    Merci encore...

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Je vous conseil de lire la documentation de mysqldump (ex: argument --tab très utile pour fractionner une base de données) et en ce qui concerne la modification de la variable max_allowed_packet, vous pouvez la définir au début de l'importation via mysql --max_allowed_packet=taille.

    Si vous avez une table contenant des millions de lignes, comme moi, cela risque de poser problème.

    Pour finir, le dump doit surement bloquer l'écriture durant la sauvegarde, un peu comme la collision SELECT, INSERT et UPDATE qui ne peut se produire.

    Personnellement, je fais mes sauvegardes serveurs en bloquant l'accès aux sites à 4h du matin.

  10. #10
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Citation Envoyé par Rollois Voir le message
    Est-ce que je peux faire un backup du dossier MaBaseDeDonnée. Et si je reveux la version du 21 janvier 2008, je copie/colle ce dossier en écransant la version courante. Est-ce une pratique normal (je suppose que non). Serait-il mieux d'arrêter le service mysql.exe avant de faire tout cela.
    C'est possible mais passer par mysqldump est plus robuste (pas besoin d'avoir exactement la même version à l'import, etc.). Et avec cette méthode arrêter le serveur n'est pas mieux mais nécessaire.

    "Normalement", en dehors des TEXT et BLOB super massifs (en encore en version LONGTEXT et LONGBLOB je crois) jouer sur max_allowed_packet ne devrait pas être nécessaire car il doit juste être assez grand pour que chaque requête individuelle passe, et même si mysqldump fait des insert groupés il en fait plusieurs quand il y a trop de données. S'il devient nécessaire de le changer il faut le modifier pour le serveur ET le client.

    Pour l'intégrité il ne doit pas être nécessaire de tout stopper. Il y a les options lock-tables et single-transaction qui devraient garantir l'intégrité pour respectivement MyIsam et InnoDb (je n'ai pas d'expérience avec le premier mais en théorie...). Seulement avec MyIsam il ne sera plus possible de faire de modifications pendant le dump, alors qu'avec InnoDb le serrvice continue à fonctionner normalement.

  11. #11
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Merci beaucoup de votre aide. Cela m'a été très utile.

    J'utilise mysqldump pour faire mes backup et je donne en commande aussi de faire un lock table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --lock-tables --single-transaction -uUSER -pPASSWORD MaDB > c:\fichier.sql
    Je vais tagger le sujet Résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire une requête Mysql
    Par Xavier dans le forum C++Builder
    Réponses: 5
    Dernier message: 01/02/2007, 17h07
  2. pb pour faire plusieurs requettes MYSQL
    Par flow++ dans le forum C
    Réponses: 2
    Dernier message: 04/05/2006, 18h00
  3. Restaurer un backup MySQL
    Par makaf dans le forum Administration
    Réponses: 1
    Dernier message: 16/01/2006, 14h34
  4. Faire un backup d'une base MySql ?
    Par souch dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo