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 :

Migration de la base de données


Sujet :

Administration MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut Migration de la base de données
    Bonjour. j'aurais besoin d'un petit renseignement.
    J'ai une base de données sur MySql qui est de type MyISAM. Et je voulais savoir s'il y a un moyen de migrer cette base de données vers une base de données InnoDB.
    Bon je sais qu'avec le script c'est faisable mais je voudrais savoir s'il y a des conséquences et lesquelles.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    En fait, ce n'est pas ta base qui est en InnoDB, mais chaque table. Pour migrer, il faut modifier chaque table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER nom_de_la_table ENGINE=InnoDB ;
    Quant aux conséquences... essentiellement, tes tables se retrouvent en InnoDB, donc avec intégrité référentielle, transactions, gestion par tablespaces plutôt que par fichiers, impossibilité d'avoir des index FULLTEXT, etc.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut
    Et bien en fait l'option InnoDB a été enlevée à MySql. Enfin disons qu'elle a juste été désactivée ici. Du coup à chaque fois que j'essaye de créer une base de données elle est par défaut de type MyIsam. Et je n'arrive pas à changer ca.

    Sinon la base de données que je veux mettre en InnoDB comporte plus d'une cinquantaine de tables. Donc est-ce-que je dois vraiment modifier toutes les tables une par une ou bien y t-til une autre façon de faire ?
    Si je veux faire ca c'est pour pouvoir intégrer un système de clé étrangère (qui n'existe pas avec MyIsam il me semble).

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par ozlem Voir le message
    système de clé étrangère (qui n'existe pas avec MyIsam il me semble).
    Effectivement !

    Citation Envoyé par ozlem Voir le message
    une cinquantaine de tables. Donc est-ce-que je dois vraiment modifier toutes les tables une par une ou bien y t-til une autre façon de faire ?
    Je ne vois pas d'autre moyen plus rapide. Ca devrait prendre un peu moins d'une heure de boulot ; c'est pas la mort !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Qu'InnoDB soit désactivé et que MyISAM soit par défaut, ce sont deux choses différentes... Peux-tu faire passer cette requête pour tirer le truc au clair ?

    Citation Envoyé par CinePhil Voir le message
    Je ne vois pas d'autre moyen plus rapide. Ca devrait prendre un peu moins d'une heure de boulot ; c'est pas la mort !
    Allez, juste pour montrer à Phil l'intérêt du GROUP_CONCAT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select GROUP_CONCAT(CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB ; ') SEPARATOR '\n') AS Req
    from information_schema.tables
    where table_schema = 'ta_base'
       AND table_type = 'BASE TABLE' 
       AND ENGINE <> 'InnoDB' ;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut
    Merci CinePhil, s'il n'y a pas d'autre moyen alors je le ferai comme cela.

    Antoun, j'ai mis le résultat de la requête en pièce jointe.

    Oula, j'ai pas compris la requête GROUP_CONCAT :/
    Images attachées Images attachées  

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    1) Donc InnoDB est effectivement désactivé, ce qui t'empêche de migrer tes tables dessus. C'est un MySQL chez toi ou chez un hébergeur ?

    2) pour ce qui est de mon GROUP_CONCAT... lance la requête (en changeant ta_base par le nom de ta base) et vois le résultat (c'est juste un SELECT, tu peux l'exécuter sans aucune conséquence).

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut
    C'est un MySql. Je pense que je n'ai qu'à modifier les paramètres dans le fichier de configuration.
    Mais pour migrer la base de données il faut que j'attende confirmation de mon chef. Pour l'instant je récupère juste les infos. Je testerai donc tout cela s'il est d'accord pour migrer la base de données.

    Merci beaucoup en tout cas.

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Pour activer InnoDB, il suffit effectivement d'enlever le --skip-innodb dans la ligne de script (ou de démarrage du service). Cf http://dev.mysql.com/doc/refman/5.0/...iguration.html.

    Pour ma requête, elle ne fait rien à part rédiger la requête de migration, donc tu peux la tester sans attendre l'accord de ton boss.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    bonjour

    excusez moi de vous poser cette question qui doit vous paraitre évidente mais je n'arrive pas à trouver de réponse détaillée... je commence tout juste avec mysql

    Comment faire pour enlever ce --skip-innodb
    ou plutôt où trouver cette fameuse ligne la ligne de script pour l'enlever?

    merci d'avance pour votre réponse
    (et excusez moi de demander quelque chose qui semble si bête)

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Le plus simple est encore que tu transmettes l'info à la personne qui a installé ton MySQL, si tu l'as toujours sous la main...

    Sinon... ton MySQL est sous Windows ou Linux ? (ou autre)

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Merci pour votre reponse

    Si je ne vous dis pas de bêtises, je suis sur linux (PHP Version 5.2.5-pl1-gentoo).
    En pièce jointe 2 captures d'écrans qui, je l'espère, faciliteront votre réponse.
    Images attachées Images attachées   

  13. #13
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Hello,

    Je n'ai aucune idée d'où il faut faire ça sous UNIX... J'ai utilisé ton dernier message pour créer une nouvelle discussion (vérifie que tu y es bien abonné) :

    http://www.developpez.net/forums/d88...db-mysql-unix/

    PS : n'hésite pas à modifier mon message si tu penses que j'ai déformé ta situation ou ta pensée.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    merci

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

Discussions similaires

  1. Migration de projet base de données paradox en interbase
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/05/2007, 10h40
  2. Réponses: 1
    Dernier message: 01/01/2007, 14h05
  3. migration d'une base de données access vers oracle
    Par narjisovish dans le forum Migration
    Réponses: 2
    Dernier message: 08/09/2005, 10h27
  4. Réponses: 1
    Dernier message: 12/08/2005, 16h36
  5. migration d' une base de données ?
    Par maysa dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/07/2004, 20h29

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