Dans un ensemble de quatre didacticiels, nous explorons la migration d'une instance de base de données MySQL vers une base de données PostgreSQL à l'aide d'AWS Database Migration Service (DMS). Dans le premier didacticiel, « Migration de MySQL vers PostgreSQL sur AWS RDS, partie 1 », nous avons présenté DMS et créé un utilisateur IAM pour le DMS. Dans le deuxième didacticiel, Migration de MySQL vers PostgreSQL sur AWS RDS, Partie 2 », nous avons créé des instances de MySQL et PostgreSQL sur RDS et nous nous sommes connectés aux deux instances. Dans ce tutoriel de continuation, nous allons créer une migration DMS pour effectuer la migration. Ce didacticiel comporte les sections suivantes :
- Création d'une migration DMS
- Création d'une instance de réplication
- Création de points de terminaison de tâche de migration
- Création d'une tâche de migration
- Conclusion
Création d'une migration DMS
Dans cette section, nous allons créer un service de migration de base de données (DMS) pour migrer la base de données MySQL vers la base de données PostgreSQL. Une migration DMS comprend les composants suivants :
- Instance de réplication
- Points de terminaison de base de données
- Tâche
Nous discuterons de la création de chacun d'entre eux dans les sous-sections, mais vous devez d'abord créer une migration DMS. Accédez au tableau de bord DMS et cliquez sur Créer une migration , comme le montre la figure 1.
Figure 1 : Créer une migration
L'assistant DMS démarre. Cliquez sur Suivant, comme illustré à la figure 2.
Figure 2 : Assistant DMS
Création d'une instance de réplication
Ensuite, configurez une instance de réplication, qui établit la connexion entre les bases de données source et cible, transfère les données et met en cache les modifications de données qui se produisent lors du chargement initial des données. Spécifiez une instance de réplication Nom et Description , et sélectionnez une classe d'instance (la valeur par défaut est dms.t2.medium), comme illustré à la Figure 3. Sélectionnez un VPC et sélectionnez l'option pour configurer la haute disponibilité avec Mult-Az; le paramètre par défaut est défini sur "Non". Sélectionnez l'option Accessible au public .
Figure 3 : Configuration d'une instance de réplication
Dans Avancé , conservez les paramètres par défaut pour l'espace de stockage alloué (50 Go), Groupe de sous-réseaux de réplication, Zone de disponibilité (Aucune préférence) et Groupe de sécurité VPC (Utiliser par défaut), comme illustré à la Figure 4. Sélectionnez la clé principale KMS (dbms) créée précédemment dans la section Configuration de l'environnement rubrique.
Figure 4 : Configuration des paramètres avancés pour l'instance de réplication
Cliquez sur Suivant, comme illustré à la figure 5.
Figure 5 : Suivant
L'instance de réplication commence à être créée, comme le montre le message de la figure 6. Ensuite, les connexions aux bases de données source et cible doivent être configurées, ce que nous accomplirons dans la sous-section suivante.
Figure 6 : L'instance de réplication commence à être créée
Création de points de terminaison de tâche de migration
L'instance de réplication peut prendre quelques minutes pour être créée. Les points de terminaison de migration peuvent être ajoutés lors de la création de l'instance de réplication. Sélectionnez le moteur source comme « mysql », comme illustré à la figure 7.
Figure 7 : Sélection du moteur source
Sélectionnez Moteur cible en tant que "postgres", comme illustré à la figure 8.
Figure 8 : Sélection du moteur cible
Dans Nom de serveur , spécifiez le point de terminaison pour l'instance de base de données RDS pour la base de données en supprimant le :port suffixe. Pour une base de données MySQL, le point de terminaison RDS est mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:3306 . Par conséquent, spécifiez le nom de serveur comme mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com , comme illustré à la Figure 9. Pour une base de données PostgreSQL sur RDS, le point de terminaison est postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:5432; par conséquent, spécifiez le nom de serveur comme postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com . Spécifiez le port séparément pour les bases de données source et cible :3306 pour la base de données MySQL et 5432 pour Postgres.
Figure 9 : Spécification du nom de serveur et du port pour les bases de données source et cible
Faites défiler vers le bas pour plus de paramètres de configuration de point de terminaison, comme illustré à la figure 10. Sélectionnez le mode SSL comme aucun pour les bases de données source et cible. Spécifiez le nom d'utilisateur et le mot de passe configurés lors de la création des instances de base de données RDS. Spécifiez le nom de la base de données PostgreSQL (postgresdb), également tel que configuré lors de la création de l'instance de base de données RDS.
Figure 10 : Spécifier le mode SSL, le nom d'utilisateur, le mot de passe et le SID ou le nom de la base de données
Dans les paramètres avancés, des attributs de connexion supplémentaires disponibles pour la base de données MySQL et la base de données PostgreSQL peuvent être spécifiés, mais aucun n'est requis pour ce didacticiel. Sélectionnez la clé principale KMS (dbms) pour les bases de données source et cible (voir Figure 11). Pour tester les points de terminaison DMS, le Exécuter le test boutons sont fournis, comme illustré à la Figure 11. Le bouton Exécuter le test les boutons sont grisés ou désactivés tant que l'instance de réplication n'a pas été créée.
Figure 11 : Configuration des paramètres avancés pour les points de terminaison DMS
Lorsque l'instance de réplication a été créée, le message "Instance de réplication créée avec succès" s'affiche, comme illustré à la figure 12.
Figure 12 : Instance de réplication créée avec succès
Une fois l'instance de réplication créée, le bouton Exécuter le test les boutons deviennent activés. Cliquez sur Exécuter le test , comme illustré à la Figure 13, pour chaque base de données.
Figure 13 : Exécuter le test
Les connexions commencent à être testées, comme indiqué par le message "Testing endpoint connection" dans la Figure 14.
Figure 14 : Test des connexions aux points de terminaison
Si les connexions aux terminaux ont été configurées comme requis, le message "Connexion testée avec succès" doit s'afficher, comme illustré à la figure 15. Cliquez sur Suivant.
Figure 15 : Connexion testée avec succès
Création d'une tâche de migration
Après avoir créé une instance de réplication et des points de terminaison de base de données, nous allons ensuite créer une tâche de migration pour se connecter aux points de terminaison et transférer réellement les données. Dans Créer une tâche Assistant, spécifiez un nom de tâche (une valeur par défaut est également spécifiée) et ajoutez une description de tâche (voir Figure 16). Sélectionnez l'option pour Commencer la tâche lors de la création .
Figure 16 : Créer un assistant de tâche
Les points de terminaison source et cible et l'instance de réplication ont été préalablement configurés et ne sont pas modifiables lors de la création d'une tâche. Sélectionnez un type de migration , qui répertorie trois options, comme illustré à la Figure 17.
- Migrer les données existantes :migre les schémas, les tables et les données de table existants qui existent déjà dans la base de données source, mais ne migre pas les modifications ultérieures de manière continue.
- Migrer les données existantes et répliquer les modifications en cours :migre les schémas, les tables et les données de table existants qui existent déjà dans la base de données source et migre également les modifications ultérieures de manière continue.
- Répliquer uniquement les modifications de données :ne migre pas les schémas, les tables et les données existants et ne migre que les modifications de données.
Sélectionnez l'option Migrer les données existantes option, comme illustré à la figure 17. Pour migrer les modifications, ce que proposent les deux autres options, le temps de rétention du journal binaire sur l'instance de base de données MySQL doit être augmenté à 24 heures ou plus.
Figure 17 : Sélection du type de migration sur Migrer les données existantes
Ensuite, configurez les Paramètres de tâche . Le mode de préparation de la table cible Le paramètre s'applique aux tables de la base de données cible et propose trois options :
- Ne rien faire :Les données et les métadonnées des tables cibles ne sont pas modifiées
- Supprimer les tableaux sur la cible :Les tables existantes, le cas échéant, sont supprimées et de nouvelles tables sont créées
- Tronquer :Les tables sont tronquées, ce qui implique que les données de la table sont supprimées mais que les métadonnées de la table ne sont pas modifiées. L'option Inclure les colonnes LOB dans la réplication Le paramètre s'applique aux colonnes de type de données LOB dans la base de données source et propose trois options :
- Ne pas inclure les colonnes LOB :Les colonnes LOB sont exclues de la migration
- Mode LOB complet :migre des LOB complets quelle que soit leur taille ; Les LOB sont migrés par blocs, ce qui peut ralentir le processus de migration
- Mode LOB limité :Tronque les LOB à la taille spécifiée dans max LOB size (kb)
Sélectionnez le mode de préparation du tableau cible comme Ne rien faire, comme illustré à la Figure 18. Sélectionnez Inclure les colonnes LOB dans la réplication en tant que mode LOB limité et spécifiez la taille maximale du LOB comme 32 Ko (par défaut). Sélectionnez Activer la journalisation option.
Figure 18 : Paramètres de tâche
Ensuite, ajoutez des règles de sélection et des règles de transformation dans les mappages de table , comme illustré à la Figure 19. Des mappages de table peuvent être ajoutés à l'aide de l'outil Guidé interface utilisateur ou en tant que JSON . L'interface utilisateur guidée est recommandée. Au moins une règle de sélection doit être ajoutée et les règles de transformation sont facultatives. Les règles de sélection sont appliquées, tandis que la sélection de schémas, de tables et de colonnes à partir de la base de données source et les règles de transformation sont appliquées avant que les schémas, les tables et les colonnes ne soient migrés vers la base de données cible.
Figure 19 : Mappages de tables
Le schéma peut être sélectionné dans Le nom du schéma est ou, si aucun n'est répertorié, sélectionnez Saisir un schéma et spécifiez un schéma dans le champ Schema name is like domaine. L'action le menu déroulant répertorie deux options :Inclure et Exclure . L'option Inclure inclut les sélections effectuées pour les schémas et les tables et l'option Exclure exclut les schémas et les tables. Les exclusions sont traitées après les inclusions. Tous les schémas ne doivent pas être sélectionnés et toutes les tables d'un schéma ne doivent pas être sélectionnées.
Nous ajouterons la règle de sélection suivante :
- Inclure tous les schémas et toutes les tables de la base de données source
Pour la règle de sélection, sélectionnez Saisir un schéma et spécifiez Le nom du schéma est comme % , qui sélectionne tous les schémas dans la base de données source, comme illustré à la figure 20. Spécifiez Le nom de la table est comme comme % , qui sélectionne toutes les tables dans les schémas sélectionnés. Sélectionnez Action comme inclure .
Figure 20 : Configurer une règle de sélection
Cliquez sur Ajouter une règle de sélection (voir Figure 21).
Figure 21 : Ajouter une règle de sélection
Une règle de sélection est ajoutée, comme illustré à la Figure 22. Lorsque la tâche est créée, un rôle IAM dms-cloudwatch-logs-role est créé pour permettre à DMS d'accéder à CloudWatch.
Figure 22 : Règle de sélection ajoutée
Ensuite, ajoutez une règle de transformation. Pour cela, cliquez sur ajouter une règle de transformation lien, comme illustré à la Figure 23.
Figure 23 : Ajouter une règle de transformation
Une règle de transformation a des paramètres pour la cible . La règle a trois options, comme illustré à la Figure 24.
- Schéma
- Tableau
- Colonne
Où spécifie un sous-ensemble des objets sélectionnés par les règles de sélection. L'action est la transformation à appliquer et les options suivantes sont disponibles :
- Renommer en (disponible pour les objets Schéma et Table)
- Supprimer la colonne (disponible pour les colonnes)
- Mettre en minuscules (disponible pour les schémas, les tableaux et les colonnes)
- Mettre en majuscules (disponible pour les schémas, les tableaux et les colonnes)
- Ajouter un préfixe (disponible pour les schémas, les tableaux et les colonnes)
- Supprimer le préfixe (disponible pour les schémas, les tables et les colonnes)
Figure 24 : Paramètres des règles de transformation
PostgreSQL utilise des minuscules dans les schémas, les tables et les colonnes. Nous ajouterons trois règles de transformation :
- Mettez tous les schémas en minuscules
- Mettre tous les tableaux en minuscules
- Mettez toutes les colonnes en minuscules
Pour ajouter la première de ces règles de transformation, sélectionnez Cible comme Schéma comme illustré à la Figure 25. Spécifiez Le nom du schéma est comme % . Sélectionnez Action comme Mettre en minuscules et cliquez sur Ajouter une règle de transformation .
Figure 25 : Ajouter une règle de transformation
Une règle de transformation est ajoutée (voir Figure 26). Pour ajouter une autre règle de transformation, cliquez sur ajouter une règle de transformation lien à nouveau.
Figure 26 : Règle de transformation ajoutée
Sélectionnez Cible comme tableau , comme illustré à la Figure 27. Spécifiez Le nom du schéma est comme % . Sélectionnez Le nom de la table est comme % . Sélectionnez Action comme Mettre en minuscules et cliquez sur Ajouter une règle de transformation .
Figure 27 : Ajouter une règle de transformation pour renommer une table
Sélectionnez Cible comme colonne , comme illustré à la Figure 28. Spécifiez Le nom du schéma est comme % . Sélectionnez Le nom de la table est comme % . Sélectionnez Le nom de la colonne est comme % . Sélectionnez Action comme Mettre en minuscules et cliquez sur Ajouter une règle de transformation .
Figure 28 : Ajout d'une règle de transformation pour rendre le nom de la colonne en minuscules
Les trois règles de sélection et une règle de transformation ajoutée sont présentées dans la Figure 29. Lorsque la tâche est exécutée, les règles de sélection sont appliquées avant les règles de transformation. Pour les paramètres avancés, cliquez sur Paramètres avancés , comme illustré à la Figure 29.
Figure 29 : Règles de sélection et règles de transformation
Dans Paramètres avancés , sélectionnez Paramètres du tableau de contrôle et spécifiez Créer une table de contrôle dans la cible à l'aide du schéma en tant que public , comme illustré à la Figure 30, puis cliquez sur Terminé.
Figure 30 : Définition du schéma de la table de contrôle dans la cible
Le paramètre Avancé est ajouté (voir Figure 31).
Figure 31 : Paramètre avancé
Après avoir configuré la tâche, cliquez sur Créer une tâche , comme illustré à la Figure 32, pour créer la tâche.
Figure 32 : Créer une tâche
Une tâche de migration est créée, comme illustré à la figure 33. Initialement, l'état de la tâche est "Création".
Figure 33 : Tâche de migration
Une tâche peut avoir l'un des statuts décrits dans le tableau 1.
Statut | Description |
Création | La tâche est en cours de création. |
Prêt | La tâche est prête à être démarrée et exécutée. Suit généralement le statut "Création". |
Démarrage | La tâche démarre, pendant laquelle la tâche se connecte à l'instance de réplication et aux points de terminaison de la base de données. Les règles de sélection et de transformation sont appliquées. |
En cours d'exécution | La tâche est en cours d'exécution, ce qui implique que la tâche migre la base de données. |
Chargement terminé | La tâche a terminé le chargement (migration) de la base de données. |
Échec | La tâche a échoué. |
Erreur | Une erreur s'est produite lors de la migration. Certains des schémas et des tables peuvent avoir migré avec succès, mais au moins un schéma ou une table a échoué à migrer. |
Modification | La tâche est en cours de modification, généralement après qu'un utilisateur a modifié la tâche. |
Arrêt | La tâche s'arrête, généralement après que l'utilisateur a choisi d'arrêter une tâche. |
Arrêté | La tâche est arrêtée, ce qui peut être dû au fait qu'un utilisateur a arrêté une tâche ou parce qu'un type de migration Migrer les données existantes et répliquer les modifications en cours est utilisé et que la tâche a terminé le chargement initial . |
Suppression | La tâche est en train d'être supprimée, ce qui est dû au fait que l'utilisateur a supprimé la tâche. |
Tableau 1 : Statuts des tâches
Deux rôles IAM, un pour CloudWatch et l'autre pour VPC, sont créés, comme illustré à la Figure 34.
Figure 34 : Rôles IAM pour DMS
Conclusion
Dans ce troisième tutoriel sur la migration d'une instance de base de données MySQL sur RDS vers une instance de base de données Postgres sur RDS, nous avons créé une migration DMS comprenant une instance de réplication, des points de terminaison de migration et une tâche de migration. Dans le quatrième didacticiel, nous discuterons de l'exécution de la migration DMS pour effectuer la migration et évaluer les résultats.