Tutoriel : Migrer en ligne de PostgreSQL vers Azure Database pour PostgreSQL à l’aide de DMS via le portail Azure
Vous pouvez utiliser Azure Database Migration Service pour migrer les bases de données d’une instance PostgreSQL locale vers Azure Database pour PostgreSQL avec un temps d’arrêt minimal pour l’application. Dans ce tutoriel, vous allez migrer l’exemple de base de données DVD Rental à partir d’une instance PostgreSQL 9.6 locale vers Azure Database pour PostgreSQL à l’aide de l’activité de migration en ligne dans Azure Database Migration Service.
Dans ce tutoriel, vous allez apprendre à :
- Migrer l’exemple de schéma à l’aide de l’utilitaire pg_dump.
- Créer une instance Azure Database Migration Service.
- Créer un projet de migration dans Azure Database Migration Service.
- Exécuter la migration.
- Surveiller la migration.
- Effectuer le basculement de la migration.
Notes
L’utilisation d’Azure Database Migration Service pour effectuer une migration en ligne nécessite la création d’une instance basée sur le niveau tarifaire Premium. Nous chiffrons le disque pour empêcher le vol de données pendant le processus de migration.
Important
Pour une expérience de migration optimale, Microsoft recommande de créer une instance Azure Database Migration Service dans la même région Azure que la base de données cible. Le déplacement des données entre les régions ou les zones géographiques peut ralentir le processus de migration et introduire des erreurs.
Prérequis
Pour suivre ce didacticiel, vous devez effectuer les opérations suivantes :
Téléchargez et installez PostgreSQL Community Edition 9.4, 9.5, 9.6 ou 10. La version du serveur PostgreSQL source doit être 9.4, 9.5, 9.6, 10, 11, 12 ou 13. (pour plus d’informations, consultez la page Versions prises en charge des bases de données PostgreSQL) ;
Notez également que la version cible d'Azure Database pour PostgreSQL doit être égale ou ultérieure à la version PostgreSQL locale. Par exemple, PostgreSQL 9.6 peut migrer vers Azure Database pour PostgreSQL 9.6, 10 ou 11, et non vers Azure Database pour PostgreSQL 9.5.
Créez un serveur dans Azure Database pour PostgreSQL ou créez un serveur Azure Database pour PostgreSQL – Hyperscale (Citus).
Créez un Réseau virtuel Microsoft Azure pour Azure Database Migration Service à l’aide du modèle de déploiement Azure Resource Manager, qui fournit une connectivité site à site à vos serveurs sources locaux via ExpressRoute ou un VPN. Pour plus d’informations sur la création d’un réseau virtuel, consultez la documentation sur le réseau virtuel, en particulier les articles sur le démarrage rapide, qui fournissent des informations pas à pas.
Notes
Pendant la configuration du réseau virtuel, si vous utilisez ExpressRoute avec le peering réseau à Microsoft, ajoutez ces points de terminaison au sous-réseau où doit être provisionné le service :
- Point de terminaison de base de données cible (par exemple, un point de terminaison SQL, un point de terminaison Azure Cosmos DB, etc.)
- Point de terminaison de stockage
- Point de terminaison Service Bus
Cette configuration est nécessaire car Azure Database Migration Service ne dispose pas d’une connectivité Internet.
Assurez-vous que les règles de groupe de sécurité réseau (NSG) de votre réseau virtuel ne bloquent pas le port de sortie 443 de ServiceTag pour ServiceBus, Storage et AzureMonitor. Pour plus d’informations sur le filtrage du trafic de groupe de sécurité réseau de réseau virtuel, consultez l’article Filtrer le trafic avec les groupes de sécurité réseau.
Configurez votre pare-feu Windows pour accéder au moteur de base de données.
Ouvrez votre pare-feu Windows pour permettre à Azure Database Migration Service d’accéder au serveur PostgreSQL source, par défaut le port TCP 5432.
Lorsque vous utilisez une appliance de pare-feu devant vos bases de données sources, vous devrez peut-être ajouter des règles de pare-feu pour permettre à Azure Database Migration Service d’accéder aux bases de données sources pour la migration.
Créez une règle de pare-feu de niveau serveur pour Azure Database pour PostgreSQL afin de permettre à Azure Database Migration Service d’accéder aux bases de données cibles. Fournissez la plage de sous-réseau du réseau virtuel utilisé pour Azure Database Migration Service.
Activez la réplication logique dans le fichier postgresql.config, puis définissez les paramètres suivants :
- wal_level = logical
- max_replication_slots = [nombre d’emplacements]. Valeur recommandée : cinq emplacements
- max_wal_senders = [nombre de tâches simultanées] - le paramètre max_wal_senders définit le nombre de tâches simultanées qui peuvent s’exécuter, paramètre recommandé : 10 tâches
Important
Toutes les tables de votre base de données existante nécessitent une clé primaire pour garantir que les modifications peuvent être synchronisées avec la base de données cible.
Migrer l’exemple de schéma
Pour compléter tous les objets de base de données tels que les schémas de table, les index et les procédures stockées, nous devons extraire le schéma à partir de la base de données source et l’appliquer à la base de données.
Utilisez la commande pg_dump -s afin de créer un fichier de vidage de schéma pour une base de données.
pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
Par exemple, pour créer un fichier de vidage de schéma pour la base de données dvdrental :
pg_dump -O -h localhost -U postgres -d dvdrental -s -x > dvdrentalSchema.sql
Pour plus d’informations sur l’utilisation de l’utilitaire pg_dump, consultez les exemples du tutoriel pg-dump.
Créez une base de données vide dans votre environnement cible, c’est-à-dire Azure Database pour PostgreSQL.
Pour plus d’informations sur la création et la connexion d’une base de données, consultez l’article Créer un serveur Azure Database pour PostgreSQL dans le Portail Azure ou Créer un serveur Azure Database pour PostgreSQL – Hyperscale (Citus) dans le Portail Azure.
Notes
Une instance Azure Database pour PostgreSQL – Hyperscale (Citus) dispose uniquement d’une base de données unique : citus.
Importez le schéma dans la base de données cible que vous avez créée en restaurant le fichier de vidage du schéma.
psql -h hostname -U db_username -d db_name < your_schema.sql
Par exemple :
psql -h mypgserver-20170401.postgres.database.azure.com -U postgres -d dvdrental citus < dvdrentalSchema.sql
Notes
Le service de migration gère en interne l’activation et la désactivation des clés et des déclencheurs étrangers pour garantir une migration fiable des données. Par conséquent, vous n’avez pas à vous soucier d’apporter des modifications au schéma de la base de données cible.
Inscrire le fournisseur de ressources
Avant de créer votre première instance Database Migration Service, vous devez inscrire le fournisseur de ressources Microsoft.DataMigration.
Connectez-vous au portail Azure. Recherchez et sélectionnez Abonnements.
Sélectionnez l’abonnement dans lequel vous voulez créer l’instance Azure Database Migration Service, puis sélectionnez Fournisseurs de ressources.
Recherchez « migration », puis sélectionnez Inscrire pour Microsoft.DataMigration.
Créer une instance de service DMS
Dans le portail Azure, sélectionnez + Créer une ressource, recherchez Azure Database Migration Service, puis sélectionnez Azure Database Migration Service dans la liste déroulante.
Dans l’écran Azure Database Migration Service, sélectionnez Créer.
Dans l’écran Créer un service de migration, spécifiez un nom, l’abonnement, un groupe de ressources nouveau ou existant et l’emplacement pour le service.
Sélectionnez un réseau virtuel existant ou créez-en un.
Le réseau virtuel fournit à Azure Database Migration Service un accès au serveur PostgreSQL source et à l’instance Azure Database pour PostgreSQL cible.
Pour plus d’informations sur la création d’un réseau virtuel dans le portail Azure, consultez l’article Créer un réseau virtuel au moyen du portail Azure.
Sélectionnez un niveau tarifaire.
Pour plus d’informations sur les coûts et les niveaux de tarification, consultez la page de tarification.
Sélectionnez Vérifier + créer pour créer le service.
La création du service se terminera en 10 à 15 minutes environ.
Créer un projet de migration
Une fois le service créé, recherchez-le dans le portail Azure, ouvrez-le, puis créez un projet de migration.
Dans le portail Azure, sélectionnez Tous les services, recherchez Azure Database Migration Service, puis sélectionnez Azure Database Migration Services.
Dans l’écran Azure Database Migration Services, recherchez le nom de l’instance Azure Database Migration Service que vous avez créée et sélectionnez l’instance, puis + Nouveau projet de migration.
Dans l’écran Nouveau projet de migration, spécifiez un nom pour le projet, dans la zone de texte Type de serveur source, sélectionnez PostgreSQL et, dans la zone de texte Type de serveur cible, sélectionnez Azure Database pour PostgreSQL.
Dans la section Choisir un type d’activité, sélectionnez Migration de données en ligne.
Notes
Une autre possibilité consiste à choisir Créer un projet uniquement pour créer le projet de migration à ce stade et exécuter la migration ultérieurement.
Sélectionnez Enregistrer, notez les conditions requises pour pouvoir utiliser Azure Database Migration Service pour migrer des données, puis sélectionnez Créer et exécuter une activité.
Spécifier les détails de la source
Dans l’écran Ajouter les détails de la source, spécifiez les détails de connexion de l’instance PostgreSQL source.
Sélectionnez Enregistrer.
Spécifier les détails de la cible
Dans l’écran Détails de la cible, spécifiez les détails de connexion pour le serveur Hyperscale (Citus) cible, qui est l’instance préapprovisionnée d’Hyperscale (Citus) sur laquelle le schéma DVD Rentals a été déployé à l’aide de pg_dump.
Sélectionnez Enregistrer, puis dans l’écran Mapper aux bases de données cibles, mappez les bases de données source et cible pour la migration.
Si la base de données cible porte le même nom que la base de données source, Azure Database Migration Service sélectionne la base de données cible par défaut.
Sélectionnez Enregistrer puis, dans l’écran Paramètres de migration, acceptez les valeurs par défaut.
Sélectionnez Enregistrer, dans l’écran Récapitulatif de la migration pour la zone de texte Nom de l’activité, spécifiez un nom pour l’activité de migration, puis examinez le récapitulatif pour vous assurer que les détails de la source et de la cible correspondent à ceux que vous avez spécifiés précédemment.
Exécuter la migration
Sélectionnez Exécuter la migration.
La fenêtre d’activité de migration s’affiche, et l’état de l’activité doit se mettre à jour pour indiquer Sauvegarde en cours.
Surveiller la migration
Dans l’écran d’activité de migration, sélectionnez Actualiser pour mettre à jour l’affichage jusqu’à voir l’état de la migration s’afficher comme Terminé.
Lorsque la migration est terminée, sous Nom de la base de données, sélectionnez une base de données spécifique pour obtenir l’état de migration des opérations Full data load (Charge complète des données) et Incremental data sync (Synchronisation incrémentielle des données).
Notes
L’opération Full data load (Charge complète des données) affiche l’état initial de migration de la charge, tandis que l’opération Incremental data sync (Synchronisation incrémentielle des données) indique l’état de capture des changements de données (CDC).
Effectuer le basculement de la migration
Une fois le chargement complet initial effectué, les bases de données identifiées par le libellé Prêt pour le basculement.
Lorsque vous êtes prêt à effectuer la migration de base de données, sélectionnez Démarrer le basculement.
Attendez que le compteur Modifications en attente affiche 0 pour vous assurer que toutes les transactions entrantes dans la base de données source sont arrêtées, activez la case à cocher Confirmer, puis sélectionnez Appliquer.
Lorsque l’état de migration de la base de données indique Terminé, recréez des séquences (le cas échéant) et connectez vos applications à la nouvelle instance cible d’Azure Database pour PostgreSQL.
Étapes suivantes
- Pour plus d’informations sur les problèmes connus et les limitations lors de l’exécution de migrations en ligne vers Azure Database pour PostgreSQL, consultez l’article Known issues and workarounds with Azure Database for PostgreSQL online migrations (Problèmes connus et solutions de contournement pour les migrations Azure Database pour PostgreSQL en ligne).
- Pour plus d’informations sur Azure Database Migration Service, consultez l’article Qu’est-ce qu’Azure Database Migration Service ?.
- Pour obtenir des informations sur Azure Database pour PostgreSQL, consultez l’article Qu’est-ce qu’Azure Database pour PostgreSQL ?.