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 :
- sauvegarder votre base de données Postgres à partir de votre instance hébergée en dehors d’Azure Arc ;
- 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 ligneDestination :
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.
Effectuez une sauvegarde de la base de données localement
Configurez-la :
- Donnez-lui un nom de fichier : MySourceBackup
- Définissez le format sur Personnalisé
La sauvegarde se termine correctement :
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.
Restaurez la base de données dans votre configuration Arc
Configurez la restauration :
Pointez sur le fichier qui contient la sauvegarde à restaurer : MySourceBackup
Conserver le format défini sur personnalisé ou tar
Cliquez sur Restaurer.
La restauration a réussi.
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 :
À 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 :
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" }
À 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=#
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.