Cette page explique comment exporter des données de clusters AlloyDB pour PostgreSQL dans des fichiers de vidage SQL.
Pour savoir comment migrer une base de données entière d'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 nouvelle 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 commencer une opération d'exportation, n'oubliez pas 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 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 Identity and Access Management (IAM) suivants :
- Le 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 sur le bucket Cloud Storage :
- Le rôle IAM
storage.objectAdminoustorage.objectCreator - Un rôle personnalisé comprenant l'autorisation
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'
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
- Assurez-vous qu'il existe un bucket Cloud Storage pour stocker le fichier exporté ou créez-en un.
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 des autorisations sur le 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 savoir comment attribuer des rôles aux buckets, consultez Définir et gérer des stratégies IAM sur des buckets.Si vous exportez le fichier dans un bucket Cloud Storage existant que vous n'avez pas créé, vous devrez peut-être disposer d'autorisations IAM supplémentaires pour pouvoir attribuer des rôles sur le bucket. Pour en savoir plus, consultez Rôles requis.
Exportez la base de données vers votre bucket Cloud Storage. Vous trouverez ci-dessous la liste des options permettant d'exporter 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 permettent deDROPtous les objets de base de données vidés avant de générer les commandes permettant de les créer.--if-exist-target-objects(facultatif) : si cette option est définie, utilisez les commandesDROP ... IF EXISTSpour vérifier l'existence de l'objet avant de le supprimer en mode--clean-target-objects.
Pour utiliser ces fonctionnalités, incluez ces options dans la commande
gcloud. Si vous ne souhaitez exporter que les définitions d'objets (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 une virgule ou des 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'pg_dumputilitaire.Pour en savoir plus sur l'utilisation de la commande
alloydb clusters export, consultez laalloydb clusters exportpage de référence de la commande.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
Assurez-vous qu'il existe un bucket Cloud Storage pour stocker le fichier exporté ou créez-en un :
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEUtilisez le format du 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 des autorisations sur le 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 savoir comment attribuer des rôles aux buckets, consultez Définir et gérer des stratégies IAM sur des buckets.Si vous exportez le fichier dans un bucket Cloud Storage existant que vous n'avez pas créé, vous devrez peut-être disposer d'autorisations IAM supplémentaires pour pouvoir attribuer des rôles sur le bucket. Pour en savoir plus, consultez Rôles requis.
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 à exporter.
- 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 permettent deDROPtous les objets de base de données vidés avant de générer les commandes permettant de les créer. - IF_EXIST_TARGET_OBJECTS : si la valeur est
true, utilisezDROP ... IF EXISTScommandes pour vérifier l'existence de l'objet avant de le supprimer 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 ne souhaitez exporter que les définitions d'objets (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 une virgule 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 dès maintenant.
Pour obtenir la liste complète des paramètres pour cette requête, consultez
clusters:export.
Étape suivante
- Découvrez comment exporter un fichier CSV.
- Annulez une exportation de données.