Migrer une base de données PostgreSQL vers un serveur PostgreSQL avec Azure Arc

Ce document décrit les étapes à suivre pour placer votre base de données PostgreSQL existante (qui n’est pas hébergée dans les services de données avec Azure Arc) dans votre serveur PostgreSQL avec Azure Arc.

Remarque

En tant que fonctionnalité en préversion, la technologie présentée dans cet article est soumise aux conditions d’utilisation supplémentaires des préversions de Microsoft Azure.

Les dernières mises à jour sont disponibles dans les notes de publication.

À propos de l’installation

Le serveur PostgreSQL avec Azure Arc est la version communauté de PostgreSQL. Par conséquent, tout outil qui fonctionne sur PostgreSQL en dehors d’Azure Arc doit fonctionner avec un serveur PostgreSQL avec Azure Arc.

Par conséquent, avec l’ensemble d’outils que vous utilisez aujourd’hui pour Postgres, vous devez être en mesure d’effectuer les opérations suivantes :

  1. sauvegarder votre base de données Postgres à partir de votre instance hébergée en dehors d’Azure Arc ;
  2. Restaurez-la dans votre serveur PostgreSQL avec Azure Arc

Voici ce qu’il vous reste à faire :

  • réinitialiser les paramètres du serveur ;
  • réinitialiser les contextes de sécurité (recréer des utilisateurs, des rôles et réinitialiser des autorisations...).

Pour effectuer cette opération de sauvegarde/restauration, vous pouvez utiliser n’importe quel outil capable d’effectuer des sauvegardes/restaurations pour Postgres. Par exemple :

  • Azure Data Studio et son extension Postgres
  • pgcli
  • pgAdmin
  • pg_dump
  • pg_restore
  • psql
  • ...

Exemple

Illustrons ces étapes à l’aide de l’outil pgAdmin. Prenons la configuration suivante :

  • Source :
    un serveur Postgres s’exécutant localement sur un serveur nu et nommé JEANYDSRV. Il est de la version 14 et héberge une base de données nommée MyOnPremPostgresDB contenant une table T1 comportant 1 ligne Migrate-source

  • Destination :
    un serveur Postgres s’exécutant dans un environnement Azure Arc et nommé postgres01. Il est de la version 14. Il n’a pas de base de données à l’exception de la base de données Postgres standard.
    Migrate-destination

Effectuez une sauvegarde de la base de données localement

Migrate-source-backup

Configurez-la :

  1. Donnez-lui un nom de fichier : MySourceBackup
  2. Définissez le format sur PersonnaliséMigrate-source-backup-configure

La sauvegarde se termine correctement :
Migrate-source-backup-completed

Créer une base de données vide sur le système de destination dans votre serveur PostgreSQL avec Azure Arc

Remarque

Pour inscrire une instance Postgres dans l’outil pgAdmin, vous devez utiliser une adresse IP publique de votre instance dans votre cluster Kubernetes et définir le port et le contexte de sécurité de manière appropriée. Vous trouverez ces détails sur la ligne du point de terminaison psql après avoir exécuté la commande suivante :

az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s

Une sortie semblable à la suivante est renvoyée :

{
  "instances": [
    {
      "endpoints": [
    "Description": "PostgreSQL Instance",
    "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
  },
  {
    "Description": "Log Search Dashboard",
    "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
  },
  {
    "Description": "Metrics Dashboard",
    "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
  }
],
"engine": "PostgreSql",
"name": "postgres01"
}
  ],
  "namespace": "arc"
}

Nommons la base de données de destination RESTORED_MyOnPremPostgresDB.

Migrate-destination-db-create

Restaurez la base de données dans votre configuration Arc

Migratre-db-restore

Configurez la restauration :

  1. Pointez sur le fichier qui contient la sauvegarde à restaurer : MySourceBackup

  2. Conserver le format défini sur personnalisé ou tarMigrate-db-restore-configure

  3. Cliquez sur Restaurer.

    La restauration a réussi.
    Migrate-db-restore-completed

Vérifier que la base de données a été correctement restaurée dans votre serveur PostgreSQL avec Azure Arc

Utilisez l'une des méthodes suivantes :

À partir de pgAdmin:

Développez l’instance Postgres hébergée dans votre installation Azure Arc. Vous voyez la table dans la base de données que vous avez restaurée et, lorsque vous sélectionnez les données, elle affiche la même ligne que dans l’instance locale :

Migrate-db-restore-verification

À partir de psql à l’intérieur de votre configuration Azure Arc :

Au sein de votre configuration Arc, vous pouvez utiliser psql pour vous connecter à votre instance Postgres, définir le contexte de la base de données sur RESTORED_MyOnPremPostgresDB, puis interroger les données :

  1. Répertoriez les points de terminaison pour former votre chaîne de connexion psql :

    az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s
    
    {
      "instances": [
        {
          "endpoints": [
        "Description": "PostgreSQL Instance",
        "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
      },
      {
        "Description": "Log Search Dashboard",
        "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
      },
      {
        "Description": "Metrics Dashboard",
        "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
      }
    ],
    "engine": "PostgreSql",
    "name": "postgres01"
    }
      ],
      "namespace": "arc"
    }
    
  2. À partir de votre chaîne de connexion psql, utilisez le paramètre -d pour indiquer le nom de la base de données. Avec la commande ci-dessous, vous êtes invité à entrer le mot de passe :

    psql -d RESTORED_MyOnPremPostgresDB -U postgres -h 10.0.0.4 -p 32639
    

    Connexions psql.

    Password for user postgres:
    psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1), server 12.3 (Debian 12.3-1.pgdg100+1))
    WARNING: psql major version 10, server major version 12.
          Some psql features might not work.
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    RESTORED_MyOnPremPostgresDB=#   
    
  3. Sélectionnez la table pour voir les données que vous avez restaurées à partir de l’instance Postgres locale :

    RESTORED_MyOnPremPostgresDB=# select * from t1;
    
     col1 |    col2
    ------+-------------
        1 | BobbyIsADog
    (1 row)
    

Remarque

  • Il n’est pas possible aujourd’hui d’« intégrer dans Azure Arc » une instance Postgres existante qui s’exécuterait localement ou dans un autre cloud. En d’autres termes, il n’est pas possible d’installer une sorte d’« agent Azure Arc » sur votre instance Postgres existante pour en faire une configuration de Postgres activé par Azure Arc. Au lieu de cela, vous devez créer une nouvelle instance Postgres et y transférer des données. Vous pouvez utiliser la technique décrite ci-dessus pour effectuer cette opération, ou vous utiliser n’importe quel outil ETL de votre choix.

*Dans ces documents, ignorez les sections Connectez-vous au portail Azure et Créer un serveur Azure Database pour PostgreSQL. Implémentez les étapes restantes dans votre déploiement Azure Arc. Ces sections sont spécifiques au serveur Azure Database pour PostgreSQL proposé en tant que service PaaS dans le cloud Azure, mais les autres parties des documents s’appliquent directement à votre serveur PostgreSQL avec Azure Arc.