Tutoriel : Migrer en ligne à partir d’une machine virtuelle Azure ou d’un serveur PostgreSQL local vers Azure Database pour PostgreSQL avec le service de migration en préversion

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur flexible

Cet article vous guide dans la migration d’une instance PostgreSQL à partir de votre infrastructure locale ou de vos machines virtuelles Azure ou locales vers un serveur flexible Azure Database pour PostgreSQL à l’aide du Portail Azure et d’Azure CLI.

Le service de migration dans Azure Database pour PostgreSQL est un service complètement managé intégré au Portail Azure et à Azure CLI. Il est conçu pour simplifier votre parcours de migration vers le serveur flexible Azure Database pour PostgreSQL.

  • Configurez votre instance de serveur flexible Azure Database pour PostgreSQL
  • Configurer la tâche de migration
  • Surveiller la migration
  • Vérifier la migration une fois terminée

Prérequis

Pour commencer la migration, vous devez disposer des prérequis suivants :

Avant de commencer la migration avec le service de migration Azure Database pour PostgreSQL, il est important de vérifier que les prérequis suivants, spécialement conçus pour les scénarios de migration en ligne, sont satisfaits.

Vérifier la version source

La version du serveur PostgreSQL source doit être 9.5 ou une version ultérieure.

Si la version PostgreSQL source est inférieure à 9.5, mettez-la à niveau vers la version 9.5 ou une version ultérieure avant de commencer la migration.

Installer test_decoding – Configuration source

  • test_decoding reçoit WAL par le biais du mécanisme de décodage logique et le décode en représentations textuelles des opérations effectuées.

  • Pour plus d’informations sur le plug-in de réplication logique, consultez la documentation PostgreSQL

Définir la configuration cible

  • Avant la migration, un serveur flexible Azure Database pour PostgreSQL doit être créé.
  • La référence SKU approvisionnée pour le serveur flexible Azure Database pour PostgreSQL doit correspondre à la source.
  • Pour créer une nouvelle instance d’Azure Database pour PostgreSQL, consultez l’article Créer une instance d’Azure Database pour PostgreSQL

Activer la capture des changements de données en tant que source

  • Le plug-in de décodage logique test_decoding capture les enregistrements modifiés de la source.
  • Dans l’instance PostgreSQL source, définissez les paramètres et valeurs suivants dans le fichier de configuration postgresql.conf :
    • Set wal_level = logical
    • Set max_replication_slots sur une valeur supérieure à 1. La valeur doit être supérieure au nombre de bases de données sélectionnées pour la migration.
    • Set max_wal_senders sur une valeur supérieure à 1. La valeur définie doit être au moins identique à max_replication_slots, plus le nombre d’expéditeurs déjà utilisés par votre instance.
    • Le paramètre wal_sender_timeout met fin aux connexions de réplication inactives depuis plus que le nombre spécifié de millisecondes. La valeur par défaut pour une base de données PostgreSQL locale est de 60 000 millisecondes (60 secondes). Définissez la valeur sur 0 (zéro) pour désactiver le mécanisme d’expiration, ce qui constitue un paramètre valide pour la migration.

Pour éviter que la migration en ligne ne manque d’espace, vérifiez que vous disposez d’un espace de stockage suffisant à l’aide d’un disque managé approvisionné. Pour ce faire, désactivez le paramètre serveur azure.enable_temp_tablespaces_on_local_ssd sur le serveur flexible pendant la durée de la migration, et rétablissez-le dans son état d’origine après la migration.

Définir la configuration réseau

La configuration du réseau est cruciale pour que le service de migration fonctionne correctement. Vérifiez que le serveur PostgreSQL source peut communiquer avec le serveur Azure Database pour PostgreSQL cible. Les configurations réseau suivantes sont essentielles pour une migration réussie.

Pour plus d’informations sur la configuration réseau, consultez le Guide réseau pour le service de migration.

  • Autres considérations relatives à la mise en réseau :

Configuration de pg_hba.conf : pour faciliter la connectivité entre les instances PostgreSQL source et cible, vous devez vérifier et éventuellement modifier le fichier pg_hba.conf. Ce fichier inclut l’authentification du client et doit être configuré pour permettre à la cible PostgreSQL de se connecter à la source. Généralement, l’instance source PostgreSQL doit être redémarrée pour que les modifications apportées au fichier pg_hba.conf prennent effet.

Le fichier pg_hba.conf se trouve dans le répertoire de données de l’installation PostgreSQL. Ce fichier doit être vérifié et configuré si la base de données source est un serveur PostgreSQL local ou un serveur PostgreSQL hébergé sur une machine virtuelle Azure.

Activer les extensions

Pour garantir une migration réussie avec le service de migration dans Azure Database pour PostgreSQL, vous allez peut-être devoir vérifier les extensions de votre instance PostgreSQL source. Les extensions fournissent des fonctionnalités supplémentaires qui peuvent être requises pour votre application. Assurez-vous de vérifier les extensions sur l’instance PostgreSQL source avant de lancer le processus de migration.

Activez les extensions prises en charge et identifiées dans l’instance PostgreSQL source sur le serveur flexible Azure Database pour PostgreSQL cible.

Pour plus d’informations sur les extensions, rendez-vous sur Extensions dans Azure Database pour PostgreSQL.

Remarque

Un redémarrage est nécessaire lorsqu’une modification a été apportée au paramètre shared_preload_libraries.

Vérifier les paramètres de serveur

  • Vous devez configurer manuellement les valeurs des paramètres de serveur dans le serveur flexible Azure Database pour PostgreSQL en fonction des valeurs des paramètre de serveur configurées dans la source.

Vérifier les utilisateurs et les rôles

  • Les utilisateurs et les différents rôles doivent être migrés manuellement vers le serveur flexible Azure Database pour PostgreSQL. Pour migrer des utilisateurs et des rôles, vous pouvez utiliser pg_dumpall --globals-only -U <<username> -f <<filename>>.sql.
  • Le serveur flexible Azure Database pour PostgreSQL ne prend pas en charge le rôle superutilisateur. Les utilisateurs ayant le rôle superutilisateur doivent être supprimés avant la migration.

Effectuer la migration

Vous pouvez migrer à l’aide du Portail Azure ou d’Azure CLI.

Cet article vous montre comment migrer, à l’aide du portail Azure, votre base de données PostgreSQL à partir d’une machine virtuelle Azure ou d’un serveur PostgreSQL local vers une instance d’Azure Database pour PostgreSQL. Le portail Azure vous permet d’effectuer différentes tâches, notamment la migration de base de données. En suivant les étapes décrites dans ce tutoriel, vous pouvez transférer en toute transparence votre base de données vers Azure et tirer parti de sa scalabilité et de ses puissantes fonctionnalités.

Configurer la tâche de migration

Le service de migration inclut une expérience simple basée sur un Assistant sur le Portail Azure. Voici comment procéder :

  1. Ouvrez votre navigateur web et accédez au portail. Entrez vos informations d’identification pour vous connecter. Il s’ouvre par défaut sur le tableau de bord des services.

  2. Accédez à votre cible Azure Database pour PostgreSQL - Serveur flexible.

  3. Dans le menu de gauche de l’onglet Vue d’ensemble du serveur flexible, faites défiler vers le bas jusqu’à Migration et sélectionnez cette option.

    Capture d’écran de la page de sélection de la migration sur le Portail Azure.

  4. Cliquez sur le bouton Créer pour migrer à partir d’une machine virtuelle Azure ou d’un serveur PostgreSQL local vers le serveur flexible. S’il s’agit de la première fois que vous utilisez le service de migration, une grille vide s’affiche pour vous inviter à commencer votre première migration.

    Capture d’écran montrant la création d’une migration.

    Si vous avez déjà créé des migrations vers le serveur flexible cible, la grille contient des informations sur les tentatives de migration.

  5. Cliquez sur le bouton Créer. Vous utilisez ensuite une série d’onglets basée sur un Assistant pour créer une migration vers ce serveur flexible cible à partir de n’importe quelle serveur PostgreSQL source.

Programme d’installation

Le premier onglet est l’onglet de configuration, où l’utilisateur lance les migrations en fournissant des détails de migration tels que le nom de la migration et le type de source.

Capture d’écran montrant la configuration de la migration.

  • Le nom de la migration est l’identificateur unique de chaque migration vers cette cible de serveur flexible. Ce champ accepte uniquement les caractères alphanumériques et n’accepte aucun caractère spécial à l’exception du trait d’union (-). Le nom ne peut pas commencer par un trait d’union et doit être unique pour un serveur cible. Deux migrations vers la même cible de serveur flexible ne peuvent pas avoir le même nom.

  • Type de serveur source : en fonction de votre source PostgreSQL, vous pouvez sélectionner Machine virtuelle Azure ou infrastructure locale.

  • L’option de migration vous permet d’effectuer des validations avant de déclencher une migration. Vous pouvez choisir l’une des options suivantes :

    • Valider : vérifie la préparation de votre serveur et de votre base de données pour la migration vers la cible.
    • Migrer : ignore les validations et démarre les migrations.
    • Valider et migrer : effectue la validation avant de déclencher une migration. La migration est uniquement déclenchée s’il n’y a pas d’échecs de validation.

Il est toujours recommandé de choisir l’option Valider ou Valider et migrer pour effectuer des validations de prémigration avant d’exécuter la migration. Pour en savoir plus sur la validation de la prémigration, reportez-vous à cette documentation.

Mode de migration vous permet de choisir le mode de la migration. Hors connexion est l’option par défaut.

Sélectionnez le bouton Suivant : Se connecter à la source.

Serveur d’exécution

Le serveur d’exécution de migration est une fonctionnalité spécialisée intégrée au service de migration dans Azure Database pour PostgreSQL, conçu pour agir en tant que serveur intermédiaire pendant la migration. Il s’agit d’une instance de serveur flexible Azure Database pour PostgreSQL distincte qui n’est pas le serveur cible, mais utilisé pour faciliter la migration des bases de données à partir d’un environnement source accessible uniquement via un réseau privé.

Capture d’écran de la page du serveur d’exécution de migration.

Pour plus d’informations sur le serveur d’exécution, visitez la page du Serveur d’exécution de migration.

Se connecter à la source

L’onglet Se connecter à la source vous invite à fournir des informations relatives à la source sélectionnée dans l’onglet Configuration, qui est la source des bases de données.

Capture d’écran de Connectsourcemigration.

  • Nom du serveur : indiquez le nom d’hôte ou l’adresse IP de l’instance PostgreSQL source
  • Port : numéro de port du serveur source
  • Nom de connexion de l’administrateur du serveur : nom d’utilisateur du serveur PostgreSQL source
  • Mot de passe : mot de passe du serveur PostgreSQL source
  • Mode SSL : les valeurs prises en charge sont préférées et requises. Lorsque le protocole SSL sur le serveur PostgreSQL source est DÉSACTIVÉ, utilisez SSLMODE=prefer. Si le protocole SSL sur le serveur source est ACTIVÉ, utilisez SSLMODE=require. Les valeurs SSL peuvent être déterminées dans le fichier postgresql.conf.
  • Tester la connexion : effectue le test de connectivité entre la cible et la source. Une fois la connexion établie, les utilisateurs peuvent passer à l’étape suivante. Sinon, vous devez identifier les problèmes de mise en réseau entre la cible et la source et vérifier le nom d’utilisateur et le mot de passe de la source. Il faut quelques minutes pour que le test de connexion établisse une connexion la cible et la source.

Une fois le test de connexion réussi, sélectionnez Suivant : Sélectionner la cible de migration

Sélectionner la cible de migration

L’onglet Sélectionner la cible de migration affiche les métadonnées du serveur flexible cible telles que le nom de l’abonnement, le groupe de ressources, le nom du serveur, l’emplacement et la version PostgreSQL.

Capture d’écran de Connecttargetmigration.

  • Nom d’utilisateur administrateur : nom d’utilisateur administrateur du serveur PostgreSQL cible
  • Mot de passe : mot de passe du serveur PostgreSQL cible
  • Tester la connexion : effectue le test de connectivité entre la cible et la source. Une fois la connexion établie, les utilisateurs peuvent passer à l’étape suivante. Sinon, nous devons identifier les problèmes de mise en réseau entre la cible et la source et vérifier le nom d’utilisateur et le mot de passe de la cible. Il faut quelques minutes pour que la connexion de test établisse une connexion entre la cible et la source.

Une fois le test de connexion réussi, sélectionnez le bouton Suivant : Sélectionner la ou les bases de données à migrer.

Sélectionner des bases de données pour la migration

Sous cet onglet, une liste de bases de données utilisateur se trouve à l’intérieur du serveur source sélectionné dans l’onglet de configuration. Vous pouvez sélectionner et migrer jusqu’à huit bases de données en une seule tentative de migration. S’il existe plus de huit bases de données utilisateur, le processus de migration est répété entre les serveurs source et cible pour l’ensemble de bases de données suivant.

Capture d’écran de FetchDBmigration.

Après avoir sélectionné les bases de données, sélectionnez Suivant : Résumé

Résumé

L’onglet Résumé récapitule toutes les informations de la source et de la cible pour la création de la validation ou de la migration. Passez en revue les détails et cliquez sur le bouton Démarrer.

Capture du résumé de la migration.

Surveiller la migration

Quelques secondes après avoir cliqué sur le bouton Démarrer, une notification s’affiche pour indiquer que la création de la validation ou de la migration est réussie. Vous êtes ensuite redirigé automatiquement vers la panneau Migration du serveur flexible, qui a une nouvelle entrée pour la validation ou la migration récemment créée.

Capture d’écran montrant la surveillance de la migration sur le Portail Azure.

La grille qui affiche les migrations comporte les colonnes suivantes : Nom, État, Mode de migration, Type de migration, Serveur source, Type de serveur source, Bases de données, **Durée et Heure de début. Les entrées sont affichées dans l’ordre décroissant de l’heure de début avec l’entrée la plus récente en haut. Vous pouvez utiliser le bouton d’actualisation pour actualiser l’état de la validation ou de la migration. Sélectionnez le nom de la migration dans la grille pour afficher les informations associées.

Après la validation ou une fois la migration créée, l’état devient InProgress avec le sous-état PerformingPreRequisiteSteps. Le flux de travail prend 2 à 3 minutes pour configurer l’infrastructure de migration et les connexions réseau.

Détails de la migration

Dans l’onglet Configuration, nous avons défini l’option de migration sur Migrer et valider. Dans ce scénario, les validations sont effectuées en premier avant le début de la migration. Dès que le sous-état PerformingPreRequisiteSteps est terminé, le workflow passe au sous-état Validation en cours.

  • Si la validation présente des erreurs, la migration passe à l’état Échec.
  • Si la validation se termine sans erreur, la migration démarre et le flux de travail passe au sous-état Migration des données.

Les résultats de la validation sont affichés sous l’onglet Validation et la migration est surveillée sous l’onglet Migration.

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

Les états de migration possibles incluent :

États de migration

State Description
InProgress L’infrastructure de migration est en cours de configuration, ou la migration des données est en cours.
Annulé La migration est annulée ou supprimée.
Échec La migration a échoué.
Échec de la validation La validation a échoué.
Réussi La migration a réussi et est terminée.
WaitingForUserAction Applicable uniquement pour la migration en ligne. Attente d’une action de l’utilisateur pour effectuer le basculement.

Sous-états de la migration

Sous-état Description
PerformingPreRequisiteSteps L’infrastructure est en cours de configuration pour la migration des données.
Validation en cours La validation est en cours.
MigratingData La migration des données est en cours.
CompletingMigration La migration est en phase finale.
Terminé La migration est terminée.
Échec La migration a échoué.

Sous-états de validation

Sous-état Description
Échec La validation a échoué.
Réussi La validation a réussi.
Avertissement La validation présente un avertissement.

Basculement

Si les deux options Migrer et Valider et migrer sont présentes, l’exécution de la migration en ligne nécessite une autre étape de la part de l’utilisateur : une action de basculement. Après la copie/le clonage des données de base, la migration passe à l’état WaitingForUserAction et au sous-état `WaitingForCutoverTrigger'. Dans cet état, l’utilisateur peut déclencher le basculement à partir du portail en sélectionnant la migration.

Avant de lancer le basculement, il est important de s’assurer que :

  • Les écritures vers la source sont arrêtées : la valeur de Latency est 0 ou proche de 0. Les informations Latency peuvent être obtenues à partir de l’écran des détails de la migration, comme indiqué ci-dessous :
  • La valeur de latency diminue à 0 ou proche de 0
  • La valeur de latency indique quand la cible a été synchronisée pour la dernière fois avec la source. Les écritures vers la source peuvent alors être arrêtées et le basculement peut être lancé. Si le trafic est important au niveau de la source, nous vous recommandons d’arrêter d’abord les écritures afin que Latency puisse atteindre une valeur proche de 0, puis de lancer le basculement.

L’opération de basculement applique toutes les modifications en attente de la source vers la cible, et termine la migration. Si vous déclenchez un « basculement » avec un paramètre Latency, différent de zéro, la réplication s’arrête jusqu’à ce point dans le temps. Toutes les données de la source jusqu’au point de basculement sont ensuite appliquées à la cible. Si vous rencontrez une latence de 15 minutes au point de basculement, toutes les données modifiées durant les 15 dernières minutes sont appliquées à la cible. Le temps nécessaire dépend du backlog des changements survenus au cours des 15 dernières minutes. Par conséquent, nous vous recommandons d’attendre que la latence atteigne zéro ou une valeur proche de zéro avant de déclencher le basculement.

  • La migration passe à l’état Succeeded dès que le sous-état Migrating Data ou le basculement (dans la migration en ligne) s’est correctement terminé. S’il y a un problème au niveau du sous-état Migrating Data, la migration passe à l’état Failed.

Annuler la migration

Vous pouvez annuler toutes les validations ou migrations en cours. Le workflow doit être dans l’état InProgress pour être annulé. Vous ne pouvez pas annuler une validation ou une migration à l’état Réussi ou Échec.

L’annulation d’une validation arrête toute activité de validation supplémentaire et la validation passe à l’état Annulé.

L’annulation d’une migration arrête l’activité de migration supplémentaire sur votre serveur cible et passe à l’état Annulé. Elle n’annule ni ne restaure aucune modification sur votre serveur cible. Veillez à supprimer les bases de données de votre serveur cible impliqué dans une migration annulée.

Vérifier la migration une fois terminée

Une fois les bases de données terminées, vous devez valider manuellement les données entre la source et la cible et vérifier que tous les objets de la base de données cible sont bien créés.

Après la migration, vous pouvez effectuer les tâches suivantes :

  • Vérifiez les données sur votre serveur flexible et vérifiez qu’il s’agit d’une copie exacte de l’instance source.
  • Après vérification, et si cela est nécessaire, activez l’option haute disponibilité sur votre serveur flexible.
  • Changez la référence SKU du serveur flexible en fonction des besoins d’applications. Cette modification nécessite un redémarrage du serveur de base de données.
  • Si vous modifiez les valeurs par défaut de certains paramètres de serveur sur l’instance source, copiez les valeurs de ces paramètres de serveur dans le serveur flexible. Copiez d’autres paramètres de serveur, tels que les étiquettes, les alertes et les règles de pare-feu (le cas échéant), de l’instance source vers le serveur flexible.
  • Apportez des modifications à votre application pour lui faire pointer les chaînes de connexion vers un serveur flexible.
  • Surveillez de près le niveau de performance des bases de données pour déterminer s’il est nécessaire de l’ajuster.