Dans quatre didacticiels, nous explorons la migration d'une base de données MySQL vers une base de données PostgreSQL à l'aide d'AWS Database Migration Service (DMS). Nous avons commencé par créer un utilisateur IAM pour DMS dans le premier didacticiel, « Migration de MySQL vers PostgreSQL sur AWS RDS, partie 1 ». Par la suite, nous avons discuté de la création d'instances de MySQL et de PostgreSQL sur AWS Relational Database Service (RDS) dans le deuxième didacticiel, "Migration de MySQL vers PostgreSQL sur AWS RDS, partie 2". Dans le troisième didacticiel, « Migration de MySQL vers PostgreSQL sur AWS RDS, partie 3 », nous avons créé une migration DMS. Dans ce dernier tutoriel, nous discuterons de l'exécution de la migration DMS pour effectuer la migration.
Ce didacticiel comporte les sections suivantes :
- Exécuter la tâche de migration DMS
- Exploration de la base de données migrée
- Exploration des journaux CloudWatch
- Limites de MySQL à la migration PostgreSQL avec DMS
- Conclusion
Exécution de la tâche de migration DMS
Une fois la tâche créée, le Statut devrait devenir Prêt , comme illustré à la figure 1. Cliquez sur Démarrer/Reprendre pour démarrer la tâche.
Figure 1 : Démarrer/Reprendre
Le statut doit devenir Démarrage , comme illustré à la figure 2.
Figure 2 : Démarrage de la tâche
Lorsque la tâche a établi une connexion avec l'instance de réplication et les points de terminaison de la base de données et s'est appliquée, les mappages de table le statut devient Running , comme illustré à la figure 3.
Figure 3 : Statut en cours d'exécution
La migration est exécutée selon la configuration et, une fois la migration terminée avec succès, le Statut devient Chargement terminé , comme illustré à la figure 4. Les tables chargées colonne indique le nombre de tables chargées.
Figure 4 : Statut Chargement terminé
Pour les tableaux qui ont été migrés, cliquez sur Statistiques du tableau , comme illustré à la figure 5. Les statistiques de table, y compris le schéma, la table, l'état, le nombre d'insertions, les suppressions, les mises à jour, les DDL, les lignes de chargement complet et le total sont répertoriées.
Figure 5 : Statistiques du tableau
Si la table de base de données source n'inclut pas de tables, les lignes de chargement complet est 0. Si une table source contient des lignes, les lignes de chargement complet indiquent le nombre de lignes comme indiqué pour certaines des lignes de la figure 6.
Figure 6 : Full Load Rows pour certaines tables est 0, alors que pour d'autres tables, le nombre de lignes chargées
Exploration de la base de données migrée
Après avoir migré les schémas et les tables de la base de données MySQL vers PostgreSQL, répertoriez les schémas dans la CLI PostgreSQL avec le dn commande. Les schémas migrés sont répertoriés, comme illustré à la figure 7. Le public schéma existait déjà avant la migration.
Figure 7 : Schémas migrés de MySQL vers la base de données PostgreSQL
La migration DMS convertit automatiquement les types de colonne de table. Un index secondaire est ajouté pour une clé primaire, créé automatiquement dans le mappage de table.
Les données de table sont également migrées, comme indiqué pour mysql.user tableau de la figure 8.
Figure 8 : Les données de table sont également migrées
Lors de la migration d'un type de base de données vers un autre (migration hétérogène), les mappages de types de données sont effectués automatiquement par DMS. Un type de données DMS intermédiaire est utilisé lors d'une migration. Lors de la migration de la base de données MySQL vers PostgreSQL, les types de données MySQL sont d'abord migrés vers le type de données DMS à l'aide des mappages intégrés pour la base de données MySQL en tant que base de données source. Par la suite, le type de données DMS est mappé aux types de données PostgreSQL, en utilisant à nouveau les mappages intégrés pour PostgreSQL comme base de données cible. Les tables liées à RDS dans la base de données MySQL sur RDS sont également migrées vers la base de données PostgreSQL, telles que la table "mysql"."rds_replication_status" illustrée à la figure 9.
Figure 9 : Données migrées pour une table d'informations RDS
Explorer les journaux CloudWatch
Si la journalisation est configurée, comme nous l'avons fait, les journaux peuvent être surveillés à partir des Journaux , comme illustré à la figure 10. Cliquez sur le lien de la tâche pour répertorier les journaux CloudWatch.
Figure 10 : Journaux
Les journaux CloudWatch sont répertoriés (voir Figure 11).
Figure 11 : Journaux CloudWatch
Comme l'indique un message des journaux CloudWatch dans la figure 12, « Toutes les tables sont chargées. La tâche de chargement complet uniquement est arrêtée".
Figure 12 : Toutes les tables sont chargées
Le nombre d'enregistrements transférés est également répertorié, comme pour le sys.sys_config tableau de la figure 13.
Figure 13 : L'entrée de journal pour une table de base de données inclut le nombre d'enregistrements transférés
Les journaux CloudWatch peuvent être utilisés pour déboguer l'exécution d'une tâche de migration. Les messages d'erreur sont répertoriés pour les tables qui n'ont pas migré avec succès dans les journaux CloudWatch.
Limites de MySQL à la migration PostgreSQL avec DMS
La migration de la base de données MySQL vers la base de données PostgreSQL avec DMS n'est pas sans limites. Le service DMS lui-même a des limites par compte d'utilisateur AWS. D'autres limitations DMS peuvent être spécifiques à une base de données. Les types de données source DMS pour MySQL n'incluent pas le jeu de caractères UTF-8 à 4 octets (utf8mb4). Le jeu de caractères pris en charge par DMS est Code Page 1252 Windows Latin 1 (ANSI) et les caractères ne figurant pas dans le jeu de caractères peuvent générer une erreur lors d'une migration. Certaines limitations existent pour la base de données MySQL en tant que source DMS. La seule limitation à l'utilisation de PostgreSQL en tant que base de données cible DMS est que le type de données JSON est converti en type de données CLOB natif.
Conclusion
Dans quatre tutoriels, nous avons discuté de la migration d'une instance de base de données MySQL sur RDS vers une instance de base de données Postgres sur RDS.