Tutoriel : effectuer une migration de PostgreSQL vers Azure Database pour PostgreSQL en ligne en tirant parti de DMS (classique) 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 effectuer une migration d’exemple de base de données listdb à partir d’une instance PostgreSQL 13.10 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. La version du serveur PostgreSQL source doit être >= 9.4. (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 12 peut effectuer une migration vers une version Azure Database pour PostgreSQL >= 12, et non vers Azure Database pour PostgreSQL 11.

  • Créez un serveur Azure Database pour PostgreSQL.

  • 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
  • L’utilisateur doit disposer du rôle REPLICATION sur le serveur qui héberge la base de données source.

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.

  1. 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 listdb :

    pg_dump -O -h localhost -U postgres -d listdb -s -x > listdbSchema.sql
    

    Pour plus d’informations sur l’utilisation de l’utilitaire pg_dump, consultez les exemples du tutoriel pg-dump.

  2. 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 façon de connecter et de créer une base de données, voir l’article Créer un serveur Azure Database pour PostgreSQL dans le Portail Azure.

  3. 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 migratedb < listdbSchema.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.

  1. Connectez-vous au portail Azure. Recherchez et sélectionnez Abonnements.

    Afficher les abonnements au portail

  2. Sélectionnez l’abonnement dans lequel vous voulez créer l’instance Azure Database Migration Service, puis sélectionnez Fournisseurs de ressources.

    Afficher les fournisseurs de ressources

  3. Recherchez « migration », puis sélectionnez Inscrire pour Microsoft.DataMigration.

    S’inscrire auprès du fournisseur de ressources

Créer une instance Azure Database Migration Service

  1. Dans le menu du Portail Azure ou dans la page Accueil, sélectionnez Créer une ressource. Recherchez et sélectionnez Azure Database Migration Service.

    Place de marché Azure

  2. Dans l’écran Azure Database Migration Service, sélectionnez Créer.

    Créer une instance Azure Database Migration Service

    Sélectionnez le Type de serveur source et le Type de serveur cible appropriés, puis choisissez l’option Database Migration Service (classique).

    Sélection du scénario Database Migration Service (classique)

  3. Sous l’onglet Informations de base de la page Créer un service de migration :

    • Sélectionnez l’abonnement.
    • Créez un groupe de ressources ou sélectionnez-en un déjà existant.
    • Spécifiez un nom pour l’instance d’Azure Database Migration Service.
    • Sélectionnez l’emplacement dans lequel vous souhaitez créer l’instance Azure Database Migration Service.
    • Choisissez Azure comme mode de service.
    • Sélectionnez un niveau tarifaire. Pour plus d’informations sur les coûts et les niveaux de tarification, consultez la page de tarification.

    Configurer des paramètres de base pour l’instance Azure Database Migration Service

    • Sélectionnez Suivant : Réseau.
  4. Sous l’onglet Réseau de la page Créer un service de migration :

    • 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 source et à l’instance 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.

    Configurer des paramètres réseau pour l’instance Azure Database Migration Service

    • Sélectionnez Vérifier + créer pour vérifier les détails, puis sélectionnez Créer pour créer le service.

    • Votre instance d’Azure Database Migration Service est créée et prête à l’emploi au bout de quelques instants :

    Service de migration créé

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.

  1. Dans le portail Azure, sélectionnez Tous les services, recherchez Azure Database Migration Service, puis sélectionnez Azure Database Migration Services.

    Capture d’écran de la recherche d’Azure Database Migration Service.

  2. 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.

    Capture d’écran de la recherche d’une instance Azure Database Migration Service.

  3. 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.

  4. Dans la section Type d’activité de migration, sélectionnez Migration de données en ligne.

    Capture d’écran de la création d’un nouveau projet de migration.

    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.

  5. Sélectionnez Créer et exécuter une activité pour utiliser correctement Azure Database Migration Service afin de migrer des données.

Spécifier les détails de la source

  1. Dans l’écran Ajouter les détails de la source, spécifiez les détails de connexion de l’instance PostgreSQL source.

    Capture d’écran de l’ajout de détails de la source.

Spécifier les détails de la cible

  1. Dans l’écran Détails de la cible, spécifiez les détails de connexion pour le serveur flexible Azure Database pour PostgreSQL, qui est l’instance pré-approvisionnée sur laquelle le schéma a été déployé à l’aide de pg_dump.

    Capture d’écran de l’ajout de détails de la cible.

  2. Sélectionnez Suivant : sélectionner des bases de données, puis dans l’écran Sélectionner des bases de données, 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.

    Capture d’écran des bases de données de mappage avec la cible.

  3. Cliquez sur Suivant : sélectionner des tables, puis sur l’écran Sélectionner des tables, sélectionnez les tables requises que vous devez migrer.

    Capture d’écran de la sélection des tables destinées à la migration.

  4. Cliquez sur Suivant : configurer les paramètres de migration, puis sur l’écran Configurer les paramètres de migration, acceptez les valeurs par défaut.

    Capture d’écran de la configuration du paramètre de migration.

  5. 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ésumé pour vérifier que les détails de la source et de la cible correspondent à ceux spécifiés précédemment.

    Capture d’écran du récapitulatif de la migration.

Exécuter la migration

  • Sélectionnez Démarrer 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

  1. 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é.

    Capture d’écran de la surveillance de la migration.

  2. 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).

    Capture d’écran des détails de charge complets de la migration.

    Capture d’écran des détails de charge incrémentiels de la migration.

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.

  1. Lorsque vous êtes prêt à effectuer la migration de base de données, sélectionnez Démarrer le basculement.

  2. 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.

    Capture d’écran de l’achèvement d’un basculement.

  3. 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