Pour reconstruire une base de données à partir d'un script en texte brut de commandes SQL, vous pouvez importer un fichier SQL stocké dans un bucket Cloud Storage dans un cluster AlloyDB pour PostgreSQL.
Vous pouvez annuler l'importation de données dans des clusters AlloyDB. Pour en savoir plus, consultez Annuler une opération d'importation.
Lorsque vous importez des fichiers de dump SQL, assurez-vous que la version de PostgreSQL à partir de laquelle le dump a été créé est compatible avec la version de PostgreSQL de votre instance AlloyDB. L'importation d'un fichier de dump d'une version supérieure vers une version inférieure peut échouer en raison d'une syntaxe SQL incompatible.
Avant de commencer
Avant de commencer une opération d'importation :
- Assurez-vous que votre base de données dispose d'un quota de stockage suffisant.
- Les opérations d'importation utilisent des ressources de base de données, mais elles n'interfèrent pas avec les opérations de base de données normales, sauf si le cluster est sous-provisionné.
Rôles et autorisations requis pour l'importation dans AlloyDB
Pour importer des données de Cloud Storage dans AlloyDB, l'utilisateur qui lance l'importation doit disposer de l'un des rôles suivants :
- Le rôle Administrateur AlloyDB
- Un rôle personnalisé comprenant les autorisations suivantes :
alloydb.clusters.getalloydb.clusters.import
De plus, le compte de service du cluster AlloyDB doit disposer de l'un des rôles suivants :
- Le rôle IAM
storage.objectViewer - Un rôle personnalisé comprenant les autorisations suivantes :
storage.objects.get
Pour obtenir de l'aide sur les rôles IAM, consultez Identity and Access Management.
Importer un fichier SQL dans des clusters AlloyDB
Pour importer des données dans un cluster AlloyDB à l'aide d'un fichier SQL, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Clusters.
Cliquez sur le nom d'un cluster pour ouvrir la page Vue d'ensemble de ce cluster.
Cliquez sur Importer.
Dans Format de fichier, sélectionnez SQL.
Dans Sélectionner un fichier source, choisissez d'importer des fichiers depuis votre ordinateur ou sélectionnez un fichier dans un emplacement Cloud Storage.
Pour importer un fichier depuis votre ordinateur, procédez comme suit :
- Sélectionnez Importer des fichiers depuis votre ordinateur.
- Cliquez sur Parcourir à côté de Sélectionner un fichier local pour sélectionner un fichier SQL sur votre ordinateur local.
- Cliquez sur Parcourir à côté de Sélectionner un emplacement Cloud Storage pour sélectionner un emplacement Cloud Storage où stocker le fichier local importé.
- Cliquez sur Importer pour importer le fichier.
Pour sélectionner un fichier SQL existant dans un bucket Cloud Storage, procédez comme suit :
- Sélectionnez Sélectionner un fichier dans Google Cloud Storage.
- Cliquez sur Parcourir à côté de bucket-name/file-name pour sélectionner un fichier SQL dans un bucket Cloud Storage.
Dans le menu déroulant Base de données, sélectionnez la base de données dans laquelle vous souhaitez importer les données.
Si votre fichier de dump SQL inclut une métacommande
\connect(ou\c), elle remplace la base de données cible que vous sélectionnez dans la console Google Cloud .Facultatif : Pour spécifier un utilisateur pour l'opération d'importation, cliquez sur Afficher les options utilisateur, puis saisissez le nom d'utilisateur dans le champ Utilisateur.
Pour lancer l'opération d'importation, cliquez sur Importer.
gcloud
- Créez un bucket Cloud Storage.
Importez le fichier SQL dans votre bucket. Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
Utilisez
gcloud storage buckets add-iam-policy-bindingpour accorder le rôle IAMstorage.objectViewerau compte de service du cluster AlloyDB pour le bucket :service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
Importez le fichier :
gcloud alloydb clusters import CLUSTER_NAME \ --region=REGION \ --database=DATABASE_NAME \ --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' \ --user=USERNAME \ --sqlRemplacez les éléments suivants :
- CLUSTER_NAME : nom du cluster.
- REGION : région dans laquelle le cluster AlloyDB est déployé.
- DATABASE_NAME : nom d'une base de données dans le cluster.
- BUCKET_NAME : nom du bucket Cloud Storage.
- PATH_TO_SQL_FILE : chemin d'accès au fichier SQL.
- USERNAME : utilisateur pour l'opération d'importation.
Si la commande affiche une erreur de type
PERMISSION_DENIED, vérifiez les autorisations.Pour plus d'informations sur l'utilisation de la commande
import, consultez la page de référence de la commandegcloud alloydb clusters import.Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les à l'aide de
gcloud storage buckets remove-iam-policy-binding.
REST v1
- Créez un bucket Cloud Storage.
- Importez le fichier SQL dans votre bucket. Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
Utilisez
gcloud storage buckets add-iam-policy-bindingpour accorder le rôle IAMstorage.objectViewerau compte de service du cluster AlloyDB pour le bucket. Le format du compte de service est le suivant :service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
Importez votre fichier SQL.
Utilisez la méthode HTTP et l'URL suivantes :
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:importAvant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID du projet.
- LOCATION_ID : 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 SQL.
- USER : utilisateur à utiliser pour l'importation.
- DATABASE_NAME : nom d'une base de données dans le cluster AlloyDB.
Corps JSON de la requête :
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE", "database": "DATABASE_NAME", "user": "USER", "sqlImportOptions": {} }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.json, puis 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/LOCATION_ID/clusters/CLUSTER_ID:import"PowerShell (Windows)
Enregistrez le corps de la requête dans un fichier nommé
request.json, puis 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/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand ContentVous recevez une réponse JSON de ce type :
Réponse
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2025-01-04T13:12:32.363393723Z", "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }Pour utiliser un autre utilisateur pour l'importation, spécifiez la propriété de l'utilisateur.
Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les.
Pour obtenir la liste complète des paramètres de la requête, consultez
clusters.import.
Vérifier l'état d'une opération d'importation
Pour vérifier l'état d'une opération d'importation, procédez comme suit :
gcloud
Exécutez la commande suivante à l'aide de gcloud alloydb operations describe :
gcloud alloydb operations describe OPERATION_ID --region=REGIONVous pouvez également lister les détails d'une opération spécifique ou annuler une opération spécifique. Pour en savoir plus sur cette commande, consultez la page de référence de la commande gcloud alloydb operations.
REST v1
Utilisez la méthode GET et l'URL suivante :
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Pour en savoir plus, consultez la page get.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- REGION : région dans laquelle le cluster AlloyDB est déployé.
- PROJECT_ID : ID du projet.
- OPERATION_ID : ID de l'opération d'importation. Pour en savoir plus, consultez Avant de commencer.
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell (Windows)
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID" | Select-Object -Expand Content
Si la requête aboutit, le corps de la réponse contient une instance de Operation.
Étapes suivantes
- Découvrez comment importer un fichier CSV.
- Découvrez comment annuler une opération d'importation.