Google CloudSQL est un service géré pour les bases de données prenant en charge MySQL et PostgreSQL. CloudSQL peut être intégré à certains des autres services Google Cloud Platform, y compris la réplication de données sur plusieurs zones avec basculement automatique. Dans cet article, nous aborderons la migration d'une instance de base de données MySQL de Google CloudSQL vers AWS RDS à l'aide de Database Migration Service (DMS). Cet article comporte les sections suivantes :
- Configuration de l'environnement
- Création d'une instance de base de données MySQL RDS
- Connexion à la base de données MySQL sur RDS
- Créer un projet Google Cloud Platform
- Création d'une instance CloudSQL
- Ajout d'une route pour l'adresse IP de l'instance de base de données CloudSQL à la table de routage VPC
- Création d'une instance de réplication DMS
- Ajout d'un réseau pour la connectivité de l'instance de réplication à l'instance de base de données CloudSQL
- Création de points de terminaison de réplication de base de données
- Création d'une tâche de réplication
- Exécuter la tâche de réplication
- Exploration des tables migrées
- Explorer les journaux CloudWatch
- Supprimer une migration
- Suppression d'instances de base de données
- Conclusion
Configuration de l'environnement
Un compte de facturation Google Cloud Platform est requis. Le compte Google Cloud Platform Free Tier offre un essai gratuit la première année. Un compte AWS est également requis; cela peut être créé sur https://aws.amazon.com/resources/create-account/.
Création d'une instance de base de données MySQL RDS
Étant donné que nous allons migrer une base de données MySQL de CloudSQL vers AWS RDS, nous devons créer une instance de base de données MySQL sur RDS. Accédez à RDS sur https://aws.amazon.com/rds et, dans l'assistant RDS, sélectionnez le moteur comme MySQL, comme illustré à la figure 1.
Figure 1 : Sélection du moteur de base de données MySQL
En Production ? , sélectionnez Dév/Test , comme illustré à la figure 2.
Figure 2 : Sélection du développement et du test
Dans Spécifier les détails de la base de données , cochez la case Afficher uniquement les options éligibles pour l'offre gratuite RDS , comme illustré à la figure 3. Sélectionnez le modèle de licence en tant que licence publique générale. Sélectionnez la version du moteur de base de données comme MySQL 5.6.35. Les versions 5.5, 5.6 et 5.7 de MySQL sont prises en charge pour la cible DMS. Sélectionnez DB Instance Class comme db.t2.micro, qui a une capacité de 1 vCPU et 1 Go de RAM. Sélectionnez Déploiement multi-AZ sur Non. Sélectionnez Type de stockage sur Usage général (SSD) et stockage alloué sur 5 Go.
Figure 3 : Spécifiez les détails de la base de données
Dans les paramètres de la base de données, spécifiez un identifiant d'instance DB (mysqldb), Nom d'utilisateur principal et Mot de passe principal, comme illustré à la figure 4. Cliquez sur Étape suivante.
Figure 4 : Spécification des paramètres de la base de données
Dans Configurer les paramètres avancés, sélectionnez un VPC, comme illustré à la Figure 5. La migration DMS doit être créée dans le même VPC que l'instance de base de données RDS. Définissez la zone de disponibilité sur us-east-1b. Sélectionnez l'option Créer un nouveau groupe de sécurité. Dans Options de base de données, spécifiez un nom de base de données (mysqldb). Spécifiez un port de base de données (3306) et sélectionnez un groupe de paramètres de base de données.
Figure 5 : Configuration des paramètres avancés
La plupart ou tous les autres paramètres, y compris le groupe d'options, l'authentification de base de données IAM activée, le chiffrement activé, la sauvegarde et la surveillance, peuvent être conservés par défaut (voir Figure 6). Les sauvegardes automatiques doivent être activées pour MySQL sur RDS en tant que source DMS. Cliquez sur Lancer l'instance de base de données .
Figure 6 : Lancer l'instance de base de données
Une nouvelle instance de base de données commence à être créée, comme indiqué par le message de la figure 7. Cliquez sur Afficher vos instances de base de données pour afficher les instances de base de données.
Figure 7 : Votre instance DB est en cours de création
Une nouvelle instance de base de données MySQL sur RDS démarre, comme illustré à la figure 8.
Figure 8 : Instance de base de données MySQL sur RDS
Cliquez sur le lien Groupe de sécurité, comme illustré à la figure 9, pour modifier les règles entrantes/sortantes afin d'autoriser le trafic depuis/vers toutes les adresses IP.
Figure 9 : Lien du groupe de sécurité
Sélectionnez l'onglet Entrant et cliquez sur le bouton Modifier pour modifier les règles entrantes, comme illustré à la Figure 10.
Figure 10 : Modification des règles entrantes
Dans Modifier les règles entrantes, définissez Type sur Tout le trafic, Protocole sur Tout, Plage de ports sur 0-65535, Source sur N'importe où, puis cliquez sur Enregistrer (voir Figure 11).
Figure 11 : Modifier les règles entrantes
Les règles entrantes modifiées sont illustrées à la figure 12.
Figure 12 : Règles entrantes
Les règles sortantes ne doivent pas être modifiées car elles sont déjà définies pour autoriser le trafic vers toutes les adresses IP de destination, comme illustré à la figure 13.
Figure 13 : Règles sortantes
Connexion à la base de données MySQL sur RDS
Obtenez l'hôte de l'instance de base de données RDS à partir du point de terminaison ; l'adresse de l'hôte est le Endpoint avec le suffixe de port :3306 supprimé. Connectez-vous à l'instance de base de données MySQL sur RDS en utilisant l'adresse et le port de l'hôte avec la commande mysql suivante pour démarrer une interface de ligne de commande MySQL.
mysql --host=mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com --port=3306 --user=dvohra --password=mysql5db
L'hôte, l'utilisateur et le mot de passe seraient différents pour différents utilisateurs. Accordez l'accès au compte MySQL à l'utilisateur DMS avec les commandes suivantes, dans lesquelles l'utilisateur DMS serait différent pour différents utilisateurs.
GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON mysqldb.* TO 'dvohra'@'%';GRANT ALL PRIVILEGES ON awsdms_control.* TO 'dvohra'@'%';Créer un projet Google Cloud Platform
Vous devez créer un projet Google Cloud Platform pour utiliser CloudSQL. Pour créer un projet, cliquez sur Créer un projet vide sur la page Mise en route, comme illustré à la Figure 14.
Figure 14 : Créer un projet videDans le Nouveau projet assistant, spécifiez un nom de projet (MySQLDB) et cliquez sur Créer , comme illustré à la Figure 15.
Figure 15 : Nouveau projetUn nouveau projet est créé, comme illustré dans le tableau de bord de la figure 16.
Figure 16 : Nouveau projet Google Cloud PlatformCréation d'une instance CloudSQL
Dans cette section, nous allons créer une instance CloudSQL. Accédez à l'URL CloudSQL https://cloud.google.com/sql/ dans un navigateur, comme illustré à la figure 17. Cliquez sur Afficher la console.
Figure 17 : Afficher la consoleSélectionnez MySQLDB projet et cliquez sur Créer une instance , comme illustré à la Figure 18.
Figure 18 : Créer une instanceDans la section Créer une instance Assistant, sélectionnez MySQL et cliquez sur Suivant , comme illustré à la Figure 19.
Figure 19 : Choix du moteur comme MySQLDans Choisir un type d'instance MySQL , cliquez sur Choisir la deuxième génération pour sélectionner le type d'instance MySQL de deuxième génération, comme illustré à la figure 20. Certains des avantages du type d'instance de deuxième génération sont également répertoriés.
Figure 20 : Choisir une instance MySQL de deuxième générationDans Créer une instance MySQL de deuxième génération (voir Figure 21), spécifiez un ID d'instance et un mot de passe racine , et sélectionnez une région et Zone. Cliquez sur Créer .
Figure 21 : Créer une instance MySQL de deuxième générationUne instance MySQL commence à être créée, comme indiqué dans le tableau Instances de la Figure 22.
Figure 22 : Instance MySQL CloudSQLAjout d'une route pour l'adresse IP de l'instance de base de données CloudSQL à la table de routage VPC
Nous devons modifier la table de routage du VPC dans lequel l'instance de base de données RDS et la migration DMS sont créées pour autoriser l'accès à l'adresse IP de l'instance CloudSQL. Tout d'abord, obtenez l'adresse IP de l'instance CloudSQL à partir de la console CloudSQL, comme illustré à la Figure 23.
Figure 23 : Adresse IP de l'instance de base de données CloudSQLCliquez sur le tableau de routage lien, comme illustré à la Figure 24, pour le VPC dans lequel l'instance de base de données RDS est créée et le DMS doit être créé par la suite.
Figure 24 : Lien vers la table de routageSélectionnez l'itinéraire répertorié et cliquez sur Modifier, comme illustré à la Figure 25.
Figure 25 : Itinéraire>ModifierCliquez sur Ajouter un autre itinéraire (voir Figure 26).
Figure 26 : Ajouter un autre itinéraireSpécifiez l'adresse IP de l'instance CloudSQL dans Destination, comme illustré à la Figure 27.
Figure 27 : Spécification de la destination comme adresse IP de l'instance CloudSQLSélectionnez la cible comme passerelle Internet associée au VPC, comme illustré à la Figure 28. Une passerelle Internet permet la communication entre les instances d'un VPC et Internet.
Figure 28 : Sélection de la cible comme passerelle InternetCliquez sur Enregistrer pour enregistrer l'itinéraire. Une route est ajoutée, comme illustré à la Figure 29.
Figure 29 : Routage pour l'instance CloudSQLCréation d'une instance de réplication DMS
Dans cette section, nous allons créer une instance de réplication pour migrer une instance CloudSQL vers RDS. Cliquez sur Créer une migration dans la page de démarrage du service de migration de base de données, comme illustré à la figure 30.
Figure 30 : Créer une migrationDans la page d'accueil, cliquez sur Suivant (voir Figure 31).
Figure 31 : Page d'accueil>SuivantDans Créer une instance de réplication page, spécifiez un nom et une description, comme illustré à la Figure 32. Sélectionnez une classe d'instance en tant que dms.t2.medium. Sélectionnez la version du moteur de réplication comme 2.2.1. Sélectionnez le même VPC dans lequel l'instance de base de données RDS a été créée. Sélectionnez Multi-AZ A No. Cochez la case Publicly Accessible.
Figure 32 : Configuration d'une instance de réplicationDans Avancé, spécifiez le stockage alloué (50 Go), sélectionnez un groupe de sous-réseaux de réplication et sélectionnez la même zone de disponibilité que pour l'instance de base de données RDS, us-east-1b, comme illustré à la Figure 33. Sélectionnez le groupe de sécurité VPC par défaut. Sélectionnez la clé principale KMS créée pour DMS.
Figure 33 : Configuration des options avancéesSélectionnez les paramètres de maintenance par défaut et cliquez sur Suivant, comme illustré à la Figure 34.
Figure 34 : Instance de réplication>SuivantLe message "Votre instance de réplication est en cours de création" s'affiche, comme illustré à la Figure 35. Les points de terminaison de la base de données source et cible ne peuvent être configurés qu'après la création de l'instance de réplication.
Figure 35 : Votre instance de réplication est en cours de créationLorsque l'instance de réplication a été créée, le message "Instance de réplication créée avec succès" s'affiche (voir Figure 36).
Figure 36 : Instance de réplication créée avec succèsLes instances de réplication répertorient la nouvelle instance de réplication créée, comme illustré à la figure 37.
Figure 37 : Instances de réplicationAjout d'un réseau pour la connectivité de l'instance de réplication à l'instance de base de données CloudSQL
Tout d'abord, déterminez l'adresse IP sur laquelle l'instance de réplication s'exécute. L'adresse IP peut être obtenue à partir de la console de l'instance de réplication, comme illustré à la Figure 38.
Figure 38 : Adresse IP pour l'instance de réplicationAprès avoir obtenu l'adresse IP, nous ajouterons ensuite un réseau composé de l'adresse IP à l'instance MySQL sur CloudSQL. Cliquez sur le lien de l'instance CloudSQL MySQL, comme illustré à la Figure 39.
Figure 39 : Instance de base de données MySQL CloudSQLCliquez sur Autoriser l'instance de base de données MySQL page de détail, comme illustré à la Figure 40.
Figure 40 : AutorisationCliquez sur Ajouter un réseau (voir Figure 41).
Figure 41 : Ajouter un réseauDans Nouveau réseau , spécifiez un nom de réseau et une adresse IP réseau comme adresse IP de l'instance de réplication, comme illustré à la Figure 42, puis cliquez sur Terminé.
Figure 42 : Ajouter un nouveau réseau à CloudSQLUn nouveau réseau est ajouté, comme illustré à la Figure 43. Cliquez sur Enregistrer pour enregistrer le réseau.
Figure 43 : Enregistrement du nouveau réseauUn message « L'instance est en cours de mise à jour » s'affiche, comme illustré à la Figure 44.
Figure 44 : L'instance est en cours de mise à jourLorsque l'instance a été mise à jour, l'icône de l'instance indique la même chose, comme illustré à la Figure 45.
Figure 45 : Instance mise à jourCliquez sur Vue d'ensemble (voir Figure 46) pour afficher la vue d'ensemble de l'instance.
Figure 46 : PrésentationLe nouveau réseau est répertorié dans les Réseaux autorisés sur les Détails de l'instance page, comme illustré à la Figure 47.
Figure 47 : Réseaux autorisésCréation de points de terminaison de réplication de base de données
Ensuite, nous allons créer les points de terminaison de la base de données source et cible. Spécifiez les identifiants de point de terminaison pour les bases de données source et cible. Pour le moteur source, sélectionnez mysql , comme illustré à la Figure 48.
Figure 48 : Sélection du moteur source comme mysqlSélectionnez le moteur cible comme mysql également, comme illustré à la Figure 49.
Figure 49 : Sélection du moteur cible comme mysqlPour le nom du serveur source, copiez l'adresse IPv4 de l'instance CloudSQL, comme illustré à la Figure 50.
Figure 50 : Adresse IPv4 de l'instance CloudSQLPour la base de données cible, spécifiez le nom du serveur comme point de terminaison moins le suffixe de port « :3306 » pour l'instance de base de données RDS pour la base de données MySQL (voir Figure 51). Spécifiez le port pour les bases de données source et cible sur 3306. Sélectionnez le mode SSL sur aucun pour les connexions source et cible. Spécifiez le nom d'utilisateur pour la base de données source en tant que racine et le mot de passe tel qu'il a été défini lors de la création de l'instance CloudSQL. De même, définissez le nom d'utilisateur et le mot de passe pour la base de données cible sur RDS.
Figure 51 : Configuration des détails de connexion aux bases de données source et ciblePour la section Avancé des bases de données source et cible, sélectionnez la clé principale KMS dms, qui a été créée pour DMS. Cliquez sur Exécuter le test , comme illustré à la Figure 52, pour la connexion source. De même, cliquez sur Exécuter le test pour la connexion cible.
Figure 52 : Exécuter le testSi le résultat du test est "Connexion testée avec succès" pour les connexions à la base de données source et cible, cliquez sur Suivant, comme illustré à la Figure 53.
Figure 53 : Tester les connexionsCréation d'une tâche de réplication
Dans Créer une tâche, spécifiez un nom de tâche et une description de tâche, comme illustré à la Figure 54. Le point de terminaison source, le point de terminaison cible et l'instance de réplication sont codés en dur. Sélectionnez le type de migration comme Migrer les données existantes. Cochez la case Démarrer la tâche lors de la création.
Figure 54 : Créer une tâcheDans les paramètres de la tâche, sélectionnez/définissez le mode de préparation de la table cible comme Ne rien faire , Inclure les colonnes LOB dans la réplication en tant que mode LOB limité , et Max LOB size comme 32 ko, comme illustré à la Figure 55. Sélectionnez l'option Activer la journalisation option.
Figure 55 : Paramètres de tâcheDans les mappages de table , illustré à la Figure 56, au moins une règle de sélection doit être ajoutée.
Figure 56 : Mappages de tablesSélectionnez le Saisir un schéma l'option dans le nom du schéma est domaine. Spécifiez Le nom du schéma est comme mysql , comme illustré à la Figure 57. Spécifiez Le nom de la table est comme innodb_index_stats. Sélectionnez Action comme inclure . Cliquez sur Ajouter une règle de sélection .
Figure 57 : Ajouter une règle de sélectionPour ajouter une autre règle de sélection, cliquez sur ajouter une règle de sélection lien, comme illustré à la Figure 58.
Figure 58 : Ajouter une règle de sélectionAjoutez une règle de sélection pour inclure la table mysql.innodb_table_stats , comme illustré à la Figure 59.
Figure 59 : Ajout d'une règle de sélection pour mysql.innodb_table_statsDes règles de sélection peuvent être ajoutées, une pour chaque table, ou en utilisant une expression régulière générique. Ensuite, nous utiliserons un % pour ajouter une règle de sélection. Cliquez sur ajouter une règle de sélection , comme illustré à la Figure 60.
Figure 60 : Ajouter un lien de règle de sélectionSpécifiez le schéma comme mysql et spécifiez Nom de la table comme time_zone% , qui représente toutes les tables commençant par "time_zone" (voir Figure 61).
Figure 61 : Ajout d'une règle de sélection pour inclure toutes les tables dans le schéma mysql commençant par time_zoneCliquez sur Créer une tâche pour créer une tâche, comme illustré à la Figure 62.
Figure 62 : Créer une tâcheUne nouvelle tâche est ajoutée avec le statut Création initialement, comme illustré à la Figure 63. Cliquez sur Actualiser les données du serveur périodiquement pour actualiser l'état de la tâche.
Figure 63 : Tâche ajoutée avec le statut CréationLorsque la tâche a été créée et est prête à être exécutée, l'état devient Prêt, comme illustré à la Figure 64.
Figure 64 : État de la tâche PrêtExécution de la tâche de réplication
Pour démarrer l'instance de réplication, cliquez sur le bouton Démarrer/Reprendre, comme illustré à la Figure 65.
Figure 65 : Démarrer/ReprendreLe statut de la tâche devient Démarrage (voir Figure 66). Périodiquement, cliquez sur Actualiser les données du serveur pour actualiser l'état, comme illustré à la Figure 66.
Figure 66 : Début de l'état de la tâcheL'état de la tâche devient En cours d'exécution lorsque la tâche commence à s'exécuter. Lorsque le chargement complet est terminé, le statut devient Chargement terminé , comme illustré à la Figure 67.
Figure 67 : Chargement terminéExploration des tables migrées
Les tableaux chargés a une valeur de 7 pour les sept tables migrées, comme illustré à la Figure 68.
Figure 68 : Sept tables migréesPour trouver des détails sur les tables migrées, sélectionnez les Statistiques des tables onglet, comme illustré à la Figure 69.
Figure 69 : Statistiques du tableauToutes les tables qui ont été migrées sont répertoriées, comme illustré à la Figure 70.
Figure 70 : Tableaux migrésExplorer les journaux CloudWatch
Pour explorer les journaux CloudWatch, cliquez sur le lien dans les Journaux onglet (voir Figure 71).
Figure 71 : Lien journauxLes journaux CloudWatch répertorient une entrée de journal pour chaque table migrée, comme illustré à la figure 72. Lorsque toutes les tables configurées à l'aide des règles de sélection et de transformation ont été migrées, l'entrée de journal « Toutes les tables sont chargées » est ajoutée.
Figure 72 : Journaux CloudWatchLorsque toutes les tables ont été chargées, une entrée de journal Gestion des tâches terminée est ajouté, comme illustré à la Figure 73.
Figure 73 : Gestion des tâches terminéeSupprimer une migration
Pour supprimer une migration, la séquence est inverse de la création d'une migration.
- Supprimez la ou les tâches de migration.
- Supprimez les points de terminaison de la base de données.
- Supprimez l'instance de réplication.
Pour supprimer la tâche, sélectionnez la tâche et cliquez sur Supprimer, comme illustré à la Figure 74.
Figure 74 : Tâche>SupprimerDans la boîte de dialogue Supprimer la tâche, cliquez sur Supprimer, comme illustré à la Figure 75.
Figure 75 : Supprimer la boîte de dialogue de confirmation de tâcheLe statut de la tâche devient Suppression (voir Figure 76).
Figure 76 : Suppression de tâchePour supprimer les points de terminaison, sélectionnez les points de terminaison et cliquez sur Supprimer, comme illustré à la Figure 77.
Figure 77 : Points de terminaison>SupprimerDans le champ Supprimer le point de terminaison boîte de dialogue de confirmation, cliquez sur Supprimer, comme illustré à la Figure 78.
Figure 78 : Boîte de dialogue de confirmation de suppression du point de terminaisonL'état des terminaux devient Suppression, comme illustré à la Figure 79.
Figure 79 : Suppression de points de terminaisonPour supprimer une instance de réplication, sélectionnez l'instance de réplication et cliquez sur Supprimer, comme illustré à la Figure 80.
Figure 80 : Instances de réplication>SupprimerDans Supprimer l'instance de réplication boîte de dialogue de confirmation, cliquez sur Supprimer (voir Figure 81).
Figure 81 : Boîte de dialogue de confirmation Supprimer l'instance de réplicationL'état de l'instance de réplication devient Suppression, comme illustré à la Figure 82.
Figure 82 : Suppression d'une instance de réplicationSuppression d'instances de base de données
Ensuite, supprimez les bases de données source et cible. Pour supprimer la base de données cible, qui est une base de données MySQL sur RDS, sélectionnez l'instance de base de données dans le tableau Toutes les instances et cliquez sur Actions d'instance>Supprimer, comme illustré à la Figure 83.
Figure 83 : Actions d'instance>SupprimerDans Supprimer l'instance de base de données, sélectionnez l'option pour ne pas créer d'instantané final et cochez la case d'accusé de réception, puis cliquez sur Supprimer, comme illustré à la Figure 84.
Figure 84 : Boîte de dialogue Supprimer l'instance de base de donnéesL'instance de base de données RDS commence à être supprimée, comme indiqué par l'état de suppression dans la figure 85.
Figure 85 : Suppression d'une instance de base de données RDSPour supprimer l'instance de base de données CloudSQL, cliquez avec le bouton droit sur mysql l'icône de gestion d'instance de base de données et sélectionnez Supprimer (voir Figure 86).
Figure 86 : CloudSQL mysql>SupprimerDans l'instance Supprimer ? boîte de dialogue de confirmation, spécifiez le nom de l'instance dans le champ fourni pour confirmer que l'instance doit être supprimée, puis cliquez sur Supprimer, comme illustré à la Figure 87.
Figure 87 : Boîte de dialogue de confirmation de suppression d'instanceConclusion
Dans cet article, nous avons discuté de la migration de MySQL sur CloudSQL vers AWS RDS à l'aide d'AWS Database Migration Service.