Cette page explique comment exporter des données à partir de clusters AlloyDB pour PostgreSQL dans des fichiers de vidage SQL.
Pour savoir comment migrer une base de données entière depuis un serveur de base de données compatible vers une nouvelle instance AlloyDB, consultez Migrer une base de données vers AlloyDB à l'aide de Database Migration Service. Si vous souhaitez créer une instance à partir du fichier exporté, envisagez de restaurer un cluster à partir d'une sauvegarde stockée.
Vous pouvez annuler l'exportation de données à partir de clusters AlloyDB pour PostgreSQL. Pour en savoir plus, consultez Annuler l'exportation de données.
Avant de commencer
- Avant de lancer une opération d'exportation, gardez à l'esprit que les opérations d'exportation utilisent des ressources de base de données, mais qu'elles n'interfèrent pas avec les opérations de base de données standards, sauf si l'instance est sous-provisionnée.
- Des frais de transfert de données interrégionaux s'appliquent lorsque le bucket cible se trouve dans une région différente de celle du cluster source. Pour en savoir plus, consultez la page Tarifs d'AlloyDB pour PostgreSQL.
- La compression est activée si le nom de l'objet se termine par l'extension
.gz. L'objet est ensuite exporté au format.gzvers Cloud Storage. - Plusieurs opérations d'exportation peuvent s'exécuter en parallèle.
Rôles et autorisations requis pour l'exportation à partir d'AlloyDB
Pour exporter des données d'AlloyDB vers Cloud Storage, l'utilisateur qui lance l'exportation doit disposer de l'un des rôles IAM (Identity and Access Management) suivants :
- Rôle Administrateur Cloud AlloyDB (
roles/alloydb.admin) - Un rôle personnalisé comprenant les autorisations suivantes :
alloydb.clusters.getalloydb.clusters.export
De plus, le compte de service du cluster AlloyDB doit disposer de l'un des rôles suivants :
- Le rôle IAM
storage.objectAdmin - Rôle personnalisé comprenant les autorisations
storage.objects.create
Pour obtenir de l'aide sur les rôles IAM, consultez Identity and Access Management.
Exporter des données AlloyDB vers un fichier de dump SQL
Lorsque vous utilisez AlloyDB pour effectuer une exportation, que ce soit depuis la gcloud CLI ou l'API, vous faites appel à l'utilitaire pg_dump en spécifiant les options nécessaires pour garantir la validité du fichier d'exportation obtenu pour sa réimportation dans AlloyDB.
Pour exporter des données d'une base de données sur un cluster AlloyDB vers un fichier de vidage SQL dans un bucket Cloud Storage, procédez comme suit :
gcloud
- Créez un bucket Cloud Storage.
Utilisez le format fourni pour identifier le compte de service du projet à partir duquel vous effectuez l'exportation. Le format du compte de service est le suivant :
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comAccordez au compte de service les autorisations d'accès au bucket Cloud Storage pour l'opération d'exportation.
Utilisez
gcloud storage buckets add-iam-policy-bindingpour accorder le rôle IAMstorage.objectAdminau compte de service. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez Utiliser des autorisations IAM.Exportez la base de données vers votre bucket Cloud Storage. Vous trouverez ci-dessous les options d'exportation des données au format de vidage SQL :
--async(facultatif) : renvoie immédiatement une réponse, sans attendre la fin de l'opération en cours.--tables(facultatif) : tables à exporter.--schema-only(Facultatif) : si cette option est définie, seul le schéma est exporté.--clean-target-objects(facultatif) : si cette option est définie, les commandes de sortie sont envoyées àDROPpour tous les objets de base de données transférés avant d'envoyer les commandes permettant de les créer.--if-exist-target-objects(facultatif) : si cette valeur est définie, utilisez les commandesDROP ... IF EXISTSpour vérifier l'existence de l'objet avant de le déposer en mode--clean-target-objects.
Pour utiliser ces fonctionnalités, incluez ces options dans la commande
gcloud. Si vous souhaitez exporter uniquement les définitions d'objet (schéma) et aucune donnée, utilisez l'option–-schema-only. Pour spécifier les tables à exporter, utilisez l'option--tables=TABLE_NAMES. Vous pouvez spécifier des valeurs de noms de tables séparées par des virgules ou des modèles de caractères génériques pour spécifier plusieurs tables.Sinon, supprimez ces paramètres de la commande suivante :
gcloud alloydb clusters export CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME" --tables=TABLE_NAMES --schema-only --clean-target-objects --if-exist-target-objects --sqlLa commande
alloydb clusters exportne contient pas de déclencheurs ni de procédures stockées, mais elle contient des vues. Pour exporter des déclencheurs ou des procédures stockées, utilisez l'utilitairepg_dump.Pour en savoir plus sur l'utilisation de la commande
alloydb clusters export, consultez la page de référence de la commandealloydb clusters export.Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
REST v1
Créez un bucket pour l'exportation de la manière suivante :
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEUtilisez le format de compte de service pour identifier le compte de service du projet à partir duquel vous effectuez l'exportation.
Le format du compte de service est le suivant :
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comAccordez au compte de service les autorisations nécessaires pour accéder au bucket Cloud Storage pour l'opération d'exportation.
Utilisez
gcloud storage buckets add-iam-policy-bindingpour accorder le rôle IAMstorage.objectAdminau compte de service. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez Utiliser des autorisations IAM.Exportez votre base de données.
Utilisez la méthode HTTP et l'URL suivantes :
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:exportAvant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID du projet.
- REGION : région dans laquelle le cluster AlloyDB est déployé.
- CLUSTER_ID : ID du cluster.
- BUCKET_NAME : nom du bucket Cloud Storage.
- PATH_TO_SQL_FILE : chemin d'accès au fichier de dump SQL.
- DATABASE_NAME : nom d'une base de données dans l'instance AlloyDB.
- TABLES : tables à partir desquelles exporter les données.
- SCHEMA_ONLY : si la valeur est
true, seul le schéma est exporté. - CLEAN_TARGET_OBJECTS : si la valeur est
true, les commandes de sortie sontDROPpour tous les objets de base de données vidés avant la sortie des commandes permettant de les créer. - IF_EXIST_TARGET_OBJECTS : si la valeur est
true, utilisez les commandesDROP ... IF EXISTSpour vérifier l'existence de l'objet avant de le déposer en modeclean_target_objects.
Pour utiliser ces fonctionnalités, définissez les valeurs de ces paramètres sur
true. Sinon, définissez leurs valeurs surfalse. Si vous souhaitez exporter uniquement les définitions d'objet (schéma) et aucune donnée, utilisez l'optionschema_only. Pour spécifier les tables à exporter, utilisez le champtables. Vous pouvez sélectionner plusieurs tables en fournissant une liste de noms de tables séparés par des virgules ou en écrivant des caractères génériques dans le modèle.Corps JSON de la requête :
{ "gcs_destination": { "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE" }, "database": "DATABASE_NAME", "sql_export_options": { "schema_only": true, "tables": [ "TABLE1", "TABLE2" ], "clean_target_objects": false, "if_exist_target_objects": true } }Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Enregistrez le corps de la requête dans un fichier nommé
request.jsonet exécutez la commande suivante :curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"PowerShell (Windows)
Enregistrez le corps de la requête dans un fichier nommé
request.jsonet exécutez la commande suivante :$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand ContentVous recevez une réponse JSON de ce type :
Réponse
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-17T06:05:31.244428646Z", "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID", "verb": "export", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, supprimez-le maintenant.
Pour obtenir la liste complète des paramètres de la requête, consultez clusters:export.
Étapes suivantes
- Découvrez comment exporter un fichier CSV.
- Annuler une exportation de données