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

Administration MySQL Discussion :

Sauvegarde journalière, duplication de base


Sujet :

Administration MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut Sauvegarde journalière, duplication de base
    Salut tout le monde,

    J'ai une base appelé BASENAME contenant des tables MyISAM et INNODB.

    J'aimerai que chaque jour une sauvegarde la base soit effectuée avec au bout du nom la date du jour.
    Exemple: BASENAME_2005_09_01

    Toute fois, je ne veux pas que cette sauvegarde ai lieue dans un fichier de type txt, je veux que cette sauvegarde ai lieu au sein même de MySQL, c'est à dire une duplication de la base accessible aux scripts externes (PHP, etc...)

    Si je me suis mal fait comprendre, voilà un exemple d'utilisation:

    Au jour J, la base est copié avec le nom approprié BASENAME_J
    Au lancement de l'application web (PHP en l'occurence), l'utilisateur a le choix de la base de données qu'il veut utiliser entre BASENAME, BASENAME_J, BASENAME_J-1, BASENAME_J-2, etc ...
    Chaque jour une nouvelle base sera ajouté à MySQL.
    Cela permet de remonter dans le temps.

    Comment puis faire de telle duplication de la base MySQL ??

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    La réplication me parait convenir à ton cas. Cf http://jgrondin.developpez.com/artic...ication_MySQL/
    Pensez au bouton

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Merci mais l'exemple est avec deux serveurs differents.

    Est-ce possible de l'adapter sur le même serveur?

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Si tu veux tout faire sur la m^me machine, il te faudra installer plusieurs serveur MySQL sur ta machine afin de pouvoir lancer une réplication multi-serveur.

    Pour répondre à ton probleme sinon, il te suffit chaque soir de faire mysqldump de ta base BASENAME, de changer le nom de la base BASENAME en BASENAME_YYYY_MM_DD dans les lignes CREATE DATABASE et DROP DATABASE et avec ce script de créer ta base BASENAME_YYYY_MM_DD.

    En plus, c'est plus facile à mettre en place qu'une réplication...

    HTH

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    merci ren0, j'aime bien ton idée.

    Est-il possible d'automatiser cette tâche, et de la lancer lors la première connexion à la base de la journée par un internaute ??

    Merci.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Autrement j'ai essayer en copiant les fichiers .frm etc mais il doit y avoir des données autrepart avec InnoDB.

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    Style ? dans un script PHP ou un truc du genre ?

    Si tu as le choix il vaut mieux faire un cron car c'est tout de même un traitement assez lourd et si ton premier utilisateur doit attendre une création de base pour sa première connexion, il risque d'avoir un time out.
    En plus, il faudrait que ton ton serveur web dispose des autorisations pour éxécuter des commandes system (mysqldump).

    Donc, oui tu peux le faire à la première connexion d'un utiulisateur, mais idéalement, il vaut mieux faire un script qui sera planifié chaque nuit...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par ren0
    Donc, oui tu peux le faire à la première connexion d'un utiulisateur, mais idéalement, il vaut mieux faire un script qui sera planifié chaque nuit...
    Je pense retenir cette solution.
    je vais me renseigner sur la façon de procéder, je n'en ai encore jamais fait. Si tu as des liens ou des informations à me recommander, je suis preneur.

    Cela se deroule sur un Windows Server 2003 (pas le choix...)

    Merci d'avance

    NicO.

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    alors, ça va être facile, tu écris un petit .bat et tu créé une tâche planifiée quotidienne..

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Ok je vois comment procéder mais comment savoir quels fichiers à sauvegarder ??

    Je m'explique, dans mon repertoire MySQL/ j'ai un repertoire DATA/ dans lequel se trouvent mes bases de données sous formee de repertoire par exemple BASENAME/ dans lequel se trouve les fichiers .frm

    Ensuite j'ai egalement dans le repertoire DATA/ un fichier nommé ibdata1 qui se trouve être énorme... qu'en est-il de lui ?

    Ne pas oublier que 90% de mes tables sont au format InnoDB.

    j'ai deja essayer de copier simplement le repertoire BASENAME/ mais la base et sa structure ne sont copiés dans son integralité.

    Merci.

  11. #11
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    ton fichier ibdata c'est ton datafile innoDB....

    passe plutôt par un script à base de mysqldump pour copier ta base...

    http://dev.mysql.com/doc/mysql/fr/mysqldump.html

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    J'ai essayer par script PHP

    system("mysqldump --host=localhost --user=username --password=pass BASENAME_J | --host=localhost --user=username --password=pass BASENAME_J-1
    ");

    J'ai pourtant creer BASENAME_J-1 avant sans structure.
    Sans succès rien ne se passe...

  13. #13
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    est ce que l'algo fonctionne en ligne de commande ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Je n'ai pas testé....
    je n'ai encore jamais utilisé les lignes de commandes

    Un petit descriptif du procédé serait le bienvenu.
    Je suis avec EasyPHP en local.

    Merci d'avance.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    La function system() de php sert à éxécuter des commandes au niveau système comme si tu le faisais au niveau d'un terminal dos ou linux suivant ton os.
    Tu peux faire un copier coller de ta commande et la saisir dans le terminal.
    Quel est la réponse ?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    bon je viens d'executer la ligne ci dessous en par le dos:

    1/ Il copie bien la structure des tables
    2/ Problème: certaines tables contiennent + d'enregistrements, d'autres - !! Donc le transfert n'est pas très fidèle.

    Sachant que mes tables sont en innoDB....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    system("mysqldump --host=localhost --user=username --password=pass BASENAME_J | mysql --host=localhost --user=username --password=pass BASENAME_J-1 
    ");
    Merci d'avance.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Problème résolu au niveau de la ligne de commande.

    Par contre je n'arrive pas à repliquer avec le script PHP et la commande SYSTEM()....
    Il ne se passe rien. J'ai donner tous les droits àl'utilisateur pour faire mes essais.

  18. #18
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    Je ne peux pas te dire, ça fait trop longtemps que j'ai fait du php.
    a+

Discussions similaires

  1. duplication de base oracle
    Par salas dans le forum Oracle
    Réponses: 2
    Dernier message: 31/03/2006, 10h10
  2. Duplication de base IB6/firebird
    Par plouf2244 dans le forum Administration
    Réponses: 11
    Dernier message: 02/03/2006, 18h09
  3. Sauvegarde / restauration d'une base sur un autre PC
    Par LEF97 dans le forum Administration
    Réponses: 2
    Dernier message: 31/08/2005, 16h22
  4. sauvegarde quotidienne de ma base Access97
    Par ribrok dans le forum Access
    Réponses: 4
    Dernier message: 15/10/2004, 15h22
  5. Sauvegarde efficace d'une base MySql sous Linux
    Par Arioch dans le forum Administration
    Réponses: 9
    Dernier message: 19/09/2004, 11h24

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