Cette page décrit comment exporter et importer des données dans des instances Cloud SQL à l'aide de fichiers de vidage SQL.
Avant de commencer
Les exportations 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 l'instance est sous-provisionnée.
Pour obtenir des conseils, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.
Une fois l'opération d'importation terminée, vérifiez les résultats.
Exporter des données depuis Cloud SQL pour PostgreSQL
Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour PostgreSQL
Pour exporter des données de Cloud SQL vers Cloud Storage, l'utilisateur qui lance l'exportation doit disposer de l'un des rôles suivants :
- Le rôle Éditeur Cloud SQL
- Un rôle personnalisé comprenant les autorisations suivantes :
cloudsql.instances.get
cloudsql.instances.export
De plus, le compte de service de l'instance Cloud SQL doit disposer de l'un des rôles suivants :
- Le rôle IAM (Identity and Access Management)
storage.objectAdmin
- Un rôle personnalisé comprenant les autorisations suivantes :
storage.objects.create
storage.objects.list
(pour l'exportation de fichiers en parallèle uniquement)storage.objects.delete
(pour l'exportation de fichiers en parallèle uniquement)
Pour obtenir de l'aide sur les rôles IAM, consultez la page Identity and Access Management.
Exporter vers un fichier de vidage SQL à partir de Cloud SQL pour PostgreSQL
Lorsque vous utilisez Cloud SQL pour effectuer une exportation, que ce soit depuis la console Google Cloud, gcloud CLI ou l'API, vous faites appel à l'utilitairepg_dump
en spécifiant les options nécessaires pour garantir la validité du fichier d'exportation obtenu pour sa réimportation dans Cloud SQL.
Si vous envisagez d'importer vos données dans Cloud SQL, vous devez suivre les instructions fournies dans la section Exporter des données à partir d'un serveur de base de données externe afin que votre fichier de vidage SQL soit correctement formaté pour Cloud SQL.
Pour exporter des données d'une base de données sur une instance Cloud SQL vers un fichier de vidage SQL dans un bucket Cloud Storage, procédez comme suit :
Console
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
- Cliquez sur Exporter.
- Dans la section Format de fichier, cliquez sur SQL pour créer un fichier de vidage SQL.
- Dans la section Données à exporter, sélectionnez la base de données à utiliser pour l'exportation dans le menu déroulant.
- Dans la section Destination, sélectionnez Parcourir pour rechercher un bucket ou un dossier Cloud Storage pour l'exportation.
- Cliquez sur Exporter pour démarrer l'exportation.
gcloud
- Créez un bucket Cloud Storage.
- Recherchez le compte de service pour l'instance Cloud SQL à partir de laquelle vous souhaitez exporter. Pour ce faire, exécutez la commande
gcloud sql instances describe
. Recherchez le champserviceAccountEmailAddress
dans le résultat.gcloud sql instances describe INSTANCE_NAME
- Utilisez
gsutil iam
pour accorder le rôle IAMstorage.objectAdmin
au compte de service. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Exportez la base de données vers votre bucket Cloud Storage :
gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \ --database=DATABASE_NAME \ --offload
La commande
export sql
ne contient pas de déclencheurs ni de procédures stockées, mais elle contient des vues. Pour exporter des déclencheurs et/ou des procédures stockées, utilisez l'outil pg_dump.Pour plus d'informations sur l'utilisation de la commande
export sql
, consultez la page de référence de la commandesql export sql
. - Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, revoke maintenant.
REST v1
- Créez un bucket pour l'exportation de la manière suivante :
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Bien que cette étape soit facultative, nous vous recommandons de la suivre pour vous éviter d'ouvrir l'accès à d'autres données.
- Attribuez à votre instance le rôle IAM
legacyBucketWriter
pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Exportez votre base de données :
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- instance-id : ID de l'instance
- bucket_name : nom du bucket Cloud Storage
- path_to_dump_file : chemin d'accès au conteneur de vidage SQL
- database_name_1 : nom d'une base de données dans l'instance Cloud SQL
- database_name_2 : nom d'une base de données dans l'instance Cloud SQL
- offload : active l'exportation sans serveur. Définissez la valeur sur
true
pour utiliser l'exportation sans serveur.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Corps JSON de la requête :
{ "exportContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"], "offload": true | false } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
- 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.
REST v1beta4
- Créez un bucket pour l'exportation de la manière suivante :
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Bien que cette étape soit facultative, nous vous recommandons de la suivre pour vous éviter d'ouvrir l'accès à d'autres données.
- Attribuez à votre instance le rôle IAM
storage.objectAdmin
pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Exportez votre base de données :
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- instance-id : ID de l'instance
- bucket_name : nom du bucket Cloud Storage
- path_to_dump_file : chemin d'accès au conteneur de vidage SQL
- database_name_1 : nom d'une base de données dans l'instance Cloud SQL
- database_name_2 : nom d'une base de données dans l'instance Cloud SQL
- offload : active l'exportation sans serveur. Définissez la valeur sur
true
pour utiliser l'exportation sans serveur.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corps JSON de la requête :
{ "exportContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"], "offload": true | false } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, revoke maintenant.
Importer des données dans Cloud SQL pour PostgreSQL
Rôles et autorisations requis pour l'importation dans Cloud SQL pour PostgreSQL
Pour importer des données de Cloud Storage dans Cloud SQL, l'utilisateur qui lance l'importation doit disposer de l'un des rôles suivants :
- Le rôle Administrateur Cloud SQL
- Un rôle personnalisé comprenant les autorisations suivantes :
cloudsql.instances.get
cloudsql.instances.import
De plus, le compte de service de l'instance Cloud SQL doit disposer de l'un des rôles suivants :
- Le rôle IAM
storage.objectAdmin
- Un rôle personnalisé comprenant les autorisations suivantes :
storage.objects.get
storage.objects.list
(pour l'importation de fichiers en parallèle uniquement)
Pour obtenir de l'aide sur les rôles IAM, consultez la page Identity and Access Management.
Importer un fichier de vidage SQL dans Cloud SQL pour PostgreSQL
Les fichiers SQL sont des fichiers au format texte brut comportant une séquence de commandes SQL.
Console
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
- Cliquez sur Import (Importer).
- Dans la section Sélectionnez le fichier à partir duquel vous souhaitez importer des données, saisissez le chemin d'accès au bucket et au fichier de vidage SQL à utiliser pour l'importation, ou accédez à un fichier existant.
Vous pouvez importer un fichier compressé (
.gz
) ou non compressé (.sql
). - Pour le paramètre Format, sélectionnez SQL.
Sélectionnez la base de données dans laquelle vous souhaitez importer les données.
Cloud SQL exécute alors l'instruction
USE DATABASE
(Utiliser la base de données) avant l'importation.Si vous souhaitez spécifier un utilisateur pour effectuer l'importation, sélectionnez-le.
Si votre fichier d'importation contient des instructions devant être exécutées par un utilisateur spécifique, utilisez ce champ pour le spécifier.
- Cliquez sur Importer pour démarrer l'importation.
gcloud
- Créer un bucket Cloud Storage
Importez le fichier dans le bucket.
Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
- Décrivez l'instance dans laquelle vous réalisez l'importation :
gcloud sql instances describe INSTANCE_NAME
- Copiez le champ
serviceAccountEmailAddress
. - Utilisez
gsutil iam
pour accorder lestorage.objectAdmin
rôle IAM au compte de service sur le bucket.gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \ gs://BUCKET_NAME
Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser les autorisations IAM. - Importez la base de données :
gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \ --database=DATABASE_NAME
Pour plus d'informations sur l'utilisation de la commande
import sql
, consultez la page de référence de la commandesql import sql
.Si la commande affiche une erreur de type
ERROR_RDBMS
, vérifiez les autorisations. Cette erreur est souvent liée à des problèmes d'autorisation. - Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les en utilisant
gsutil iam
.
REST v1
-
Créez un fichier de vidage SQL. Ces instructions définissent certaines options qui rendent le fichier de vidage compatible avec Cloud SQL.
- Si vous importez des données à partir d'un serveur PostgreSQL sur site :
- Créez un fichier de vidage SQL en suivant les instructions de la section Exporter des données à l'aide de pg_dump.
- Créez un bucket dans Cloud Storage en suivant les instructions de la section Créer des buckets.
- Importez le fichier de vidage SQL dans le bucket Cloud Storage à l'aide de la procédure décrite dans la section Importer des objets.
- Créer un bucket Cloud Storage
Importez le fichier dans le bucket.
Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
- Attribuez à votre instance les rôles IAM
legacyBucketWriter
etobjectViewer
pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Importez le fichier de vidage :
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- instance-id : ID de l'instance
- bucket_name : nom du bucket Cloud Storage
- path_to_sql_file : chemin d'accès au fichier SQL
- database_name : nom d'une base de données dans l'instance Cloud SQL
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corps JSON de la requête :
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Pour utiliser un autre utilisateur pour l'importation, spécifiez la propriété
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.importContext.importUser
. - Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les dès maintenant.
REST v1beta4
-
Créez un fichier de vidage SQL. Ces instructions définissent certaines options qui rendent le fichier de vidage compatible avec Cloud SQL.
- Si vous importez des données à partir d'un serveur PostgreSQL sur site :
- Créez un fichier de vidage SQL en suivant les instructions de la section Exporter des données à l'aide de pg_dump.
- Créez un bucket dans Cloud Storage en suivant les instructions de la section Créer des buckets.
- Importez le fichier de vidage SQL dans le bucket Cloud Storage à l'aide de la procédure décrite dans la section Importer des objets.
- Créer un bucket Cloud Storage
Importez le fichier dans le bucket.
Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets.
- Attribuez à votre instance le rôle IAM
storage.objectAdmin
pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Importez le fichier de vidage :
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- instance-id : ID de l'instance
- bucket_name : nom du bucket Cloud Storage
- path_to_sql_file : chemin d'accès au fichier SQL
- database_name : nom d'une base de données dans l'instance Cloud SQL
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corps JSON de la requête :
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Pour utiliser un autre utilisateur pour l'importation, spécifiez la propriété
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:import.importContext.importUser
. - Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les dès maintenant.
Étape suivante
- Apprenez à vérifier l'état des opérations d'importation et d'exportation.
- Découvrez les bonnes pratiques pour l'importation et l'exportation de données.
- Obtenez davantage d'informations sur Cloud Storage.
- Consultez les problèmes connus concernant les importations et les exportations.