2011-06-02 3 views
5

Cette question s'adresse probablement aux experts MySQL et aux admins qui ont déjà fait ce genre de migration. J'ai 12 tables MySQL, des triggers et des procédures stockées sur le moteur de stockage MyISAM. Ces tables ont environ 8 données MiB combinées. Comme je déplace l'application et la base de données vers Amazon EC2 et RDS, je me demandais quelles étaient les principales considérations lors de la migration des tables de MyISAM vers InnoDB.Déplacer les tables MySQL et les données du moteur de stockage MyISAM vers InnoDB

Les étapes que je vais suivre sont plutôt les suivantes. Les tables système sur AWS RDS doivent être sur MyISAM, donc pas de contestation à ce sujet.

  • Créez 17 tables ayant la même structure que celles existantes sur MyISAM et construisez-les dans RDS InnoDB.
  • Exportation de données à partir des tables MyISAM et importation dans les nouvelles tables créées dans RDS sur InnoDB.
  • Créez les déclencheurs, les procédures stockées et les fonctions dans la base de données InnoDB. Quand je pose des questions sur les principales considérations d'une telle migration sur les moteurs de stockage MySQL, je veux savoir du point de vue des administrateurs expérimentés si quelque chose doit être explicitement pris en charge au niveau de la base de données pendant la migration des données etc afin que la DB se comporte comme il se doit et il n'y a pas de problèmes. Je suis inquiet principalement parce que j'ai lu que la façon dont InnoDB et MyISAM utilisent la mémoire tampon, les E/S, le processeur et la mémoire sont différentes.

    Je serai heureux d'accepter vos 2 cents sur ce processus.

    Merci.

    * Mise à jour *

    innodb_buffer_pool_size - {DBInstanceClassMemory * 3/4} C'est ce qu'il est défini à l'heure actuelle. Je recherche également d'autres paramètres. Faites-moi savoir si vous voulez voir les valeurs définies pour d'autres paramètres spécifiques.

  • Répondre

    2

    Il existe de nombreuses différences entre MyISAM et InnoDB, mais les principaux points que vous devriez être au courant avant la migration., 1. Les sauvegardes de données ne peut se faire en copiant simplement sur les fichiers comme dans MyISAM 2. InnoDB ne fonctionne pas d'une manière optimisée lorsqu'il est exécuté avec les options par défaut, vous devrez configurer et régler en fonction de vos besoins. 3. InnoDB n'a pas d'index compressé comme MyISAM, donc il faudra plus d'espace 4. InnoDB ajoute automatiquement les colonnes de clé primaire aux clés secondaires. assurez-vous donc que les colonnes de la clé primaire ne sont pas grandes.,

    En dehors de cette migration devrait être facile ,. 1. Créez des tables avec des structures similaires à celles de MyISAM mais uniquement avec le moteur modifié en InnoDB. 2. Vidage des données de la table MyISAM 3. Importez les données dans l'ordre des clés primaires dans le moteur InnoDB en encapsulant l'importation entre START TRANSACTION et COMMIT., C'est le moyen le plus rapide de charger des données. 4. Créez les procédures stockées et déclenchez.,. mais ils n'ont rien à voir avec le moteur de stockage.

    Vous pouvez me faire savoir si vous avez besoin d'aide avec la configuration InnoDB.

    +0

    Quels sont les paramètres InnoDB recommandés ou les valeurs de configuration à définir dans RDS pour que la performance soit efficace? Merci. Je suis les étapes. – Aakash

    0

    Le processus de migration lui-même est très facile. Dump enregistrera tous les objets nécessaires qui doivent être reconstruits. Vous n'aurez qu'à supprimer (ou modifier, si ce n'est pas ce que vous voulez par défaut), les clauses du moteur de stockage. Ce qui vous inquiète, c'est que les applications écrites pour MyISAM peuvent supposer qu'il n'est jamais nécessaire de valider les transactions. Donc, de toute façon, il y a quelques années je me suis échappé avec ceci:

    mysqldump --all-databases | perl -pwe 's/\) TYPE=MyISAM/\)/' >dump.sql 
    mysql <dump.sql 
    

    plus l'ajout de commits et de retours si nécessaire.

    1

    Si vous souhaitez convertir vos tables en cours InnoDB, voici la voie facile:

    ALTER TABLE t1 ENGINE = InnoDB; 
    

    Voir la MySQL doc.

    Faire cela sur vos propres serveurs avant d'aller dans le cloud est une excellente idée - ne changez pas deux paramètres en même temps!

    Il y a beaucoup de choses qui diffèrent dans le moteur InnoDB, mais je suis sûr que quelques minutes avec votre moteur de recherche préféré vous le montreront.

    +0

    ça marche ... j'ai essayé de changer le moteur sur les tables MyISAM de mon serveur et ça l'a changé. Je veux comprendre les changements qui se produisent réellement dans les tables et les données quand ce script alter table de moteur est exécuté ... en lire plus sur ça !! Merci. – Aakash

    +0

    Vous obtenez tout le plaisir de innodb (verrouillage de niveau de la ligne, etc) et toute la douleur (pas de compte (*), etc). –

    Questions connexes