Cette page décrit l'exportation et l'importation de fichiers dans des instances Cloud SQL en parallèle.
Avant de commencer
Avant de lancer une opération d'exportation ou d'importation, procédez comme suit :
- Assurez-vous que votre base de données dispose d'un espace de stockage suffisant.
- Suivez les bonnes pratiques pour l'exportation et l'importation de données.
- Une fois l'opération d'importation terminée, vérifiez les résultats.
Les opérations d'exportation et 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 classiques, sauf si l'instance est sous-provisionnée.
Exporter des données depuis Cloud SQL pour PostgreSQL vers plusieurs fichiers en parallèle
Les sections suivantes contiennent des informations sur l'exportation de données de Cloud SQL pour PostgreSQL vers plusieurs fichiers en parallèle.
Rôles et autorisations requis pour exporter des données de Cloud SQL pour PostgreSQL vers plusieurs fichiers en parallèle
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 des données vers plusieurs fichiers en parallèle
Vous pouvez exporter des données en parallèle à partir de plusieurs fichiers résidant dans Cloud SQL vers Cloud Storage. Pour ce faire, utilisez l'utilitairepg_dump
avec l'option --jobs
.
Si vous envisagez d'importer vos données dans Cloud SQL, suivez les instructions fournies dans la section Exporter des données à partir d'un serveur de base de données externe afin que vos fichiers soient correctement formatés pour Cloud SQL.
gcloud
Pour exporter des données de Cloud SQL vers plusieurs fichiers en parallèle, procédez comme suit:
- Créer un bucket Cloud Storage
- Pour trouver le compte de service de l'instance Cloud SQL à partir de laquelle vous exportez des fichiers, utilisez la commande
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Pour accorder le rôle IAM
storage.objectAdmin
au compte de service, utilisez la commandegcloud storage buckets add-iam-policy-binding
. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Pour exporter des données de Cloud SQL vers plusieurs fichiers en parallèle, utilisez la commande
gcloud sql export sql
:gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME \ --table=TABLE_EXPRESSION
Effectuez les remplacements suivants :
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous exportez des fichiers en parallèle.
- BUCKET_NAME: nom du bucket Cloud Storage.
- BUCKET_PATH: chemin d'accès au bucket où les fichiers d'exportation sont stockés.
- FOLDER_NAME: dossier dans lequel les fichiers d'exportation sont stockés.
- THREAD_NUMBER: nombre de threads utilisés par Cloud SQL pour exporter des fichiers en parallèle. Par exemple, si vous souhaitez exporter trois fichiers à la fois en parallèle, spécifiez
3
comme valeur de ce paramètre. - DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL à partir de laquelle l'exportation est effectuée. Vous ne devez spécifier qu'une seule base de données.
- TABLE_EXPRESSION: tables à exporter depuis la base de données spécifiée.
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 ou des procédures stockées, utilisez un seul thread pour l'exportation. Ce thread utilise l'outilpg_dump
.Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage, au format de répertoire
pg_dump
. - Si vous n'avez pas besoin du rôle IAM que vous avez défini dans la section Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour PostgreSQL, supprimez-le.
Remplacez INSTANCE_NAME par le nom de votre instance Cloud SQL.
Dans le résultat, recherchez la valeur associée au champ serviceAccountEmailAddress
.
REST v1
Pour exporter des données de Cloud SQL vers plusieurs fichiers en parallèle, procédez comme suit:
- Créez un bucket Cloud Storage :
Effectuez les remplacements suivants :gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
. - PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous créez.
- LOCATION_NAME: emplacement du bucket dans lequel vous souhaitez stocker les fichiers que vous exportez. Exemple :
us-east1
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
- 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 des données depuis Cloud SQL vers plusieurs fichiers en parallèle:
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous avez créé.
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous exportez des fichiers en parallèle.
- BUCKET_NAME: nom du bucket Cloud Storage.
- BUCKET_PATH: chemin d'accès au bucket où les fichiers d'exportation sont stockés.
- FOLDER_NAME: dossier dans lequel les fichiers d'exportation sont stockés.
- DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL à partir de laquelle l'exportation est effectuée. Vous ne devez spécifier qu'une seule base de données.
- THREAD_NUMBER: nombre de threads utilisés par Cloud SQL pour exporter des fichiers en parallèle. Par exemple, si vous souhaitez exporter trois fichiers à la fois en parallèle, spécifiez
3
comme valeur de ce paramètre.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corps JSON de la requête :
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
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 du rôle IAM que vous avez défini dans la section Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour PostgreSQL, supprimez-le.
Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage, au format de répertoire pg_dump
.
REST v1beta4
Pour exporter des données de Cloud SQL vers plusieurs fichiers en parallèle, procédez comme suit:
- Créez un bucket Cloud Storage :
Effectuez les remplacements suivants :gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
. - PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous créez.
- LOCATION_NAME: emplacement du bucket dans lequel vous souhaitez stocker les fichiers que vous exportez. Exemple :
us-east1
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
- 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 des données depuis Cloud SQL vers plusieurs fichiers en parallèle:
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous avez créé.
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous exportez des fichiers en parallèle.
- BUCKET_NAME: nom du bucket Cloud Storage.
- BUCKET_PATH: chemin d'accès au bucket où les fichiers d'exportation sont stockés.
- FOLDER_NAME: dossier dans lequel les fichiers d'exportation sont stockés.
- DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL à partir de laquelle l'exportation est effectuée. Vous ne devez spécifier qu'une seule base de données.
- THREAD_NUMBER: nombre de threads utilisés par Cloud SQL pour exporter des fichiers en parallèle. Par exemple, si vous souhaitez exporter trois fichiers à la fois en parallèle, spécifiez
3
comme valeur de ce paramètre.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corps JSON de la requête :
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
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 du rôle IAM que vous avez défini dans la section Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour PostgreSQL, supprimez-le.
Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage, au format de répertoire pg_dump
.
Importer des données à partir de plusieurs fichiers en parallèle avec Cloud SQL pour PostgreSQL
Les sections suivantes contiennent des informations sur l'importation parallèle de données à partir de plusieurs fichiers en parallèle avec Cloud SQL pour PostgreSQL.
Rôles et autorisations requis pour importer des données à partir de plusieurs fichiers en parallèle vers 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 des données dans Cloud SQL pour PostgreSQL
Vous pouvez importer des données en parallèle dans votre base de données à partir de plusieurs fichiers se trouvant dans Cloud Storage. Pour ce faire, utilisez l'utilitaire pg_restore
avec l'option --jobs
.
gcloud
Pour importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL, procédez comme suit:
- Créez un bucket Cloud Storage.
Importez les fichiers dans le bucket.
Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets à partir de fichiers.
- Pour trouver le compte de service de l'instance Cloud SQL dans laquelle vous importez des fichiers, utilisez la commande
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Pour accorder le rôle IAM
storage.objectAdmin
au compte de service, utilisez l'utilitairegcloud storage buckets add-iam-policy-binding
. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM. - Pour importer des données depuis plusieurs fichiers en parallèle dans Cloud SQL, utilisez la commande
gcloud sql import sql
:gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME
Effectuez les remplacements suivants :
- INSTANCE_NAME: nom de l'instance Cloud SQL dans laquelle vous importez des fichiers en parallèle.
- BUCKET_NAME: nom du bucket Cloud Storage.
- BUCKET_PATH: chemin d'accès au bucket où les fichiers d'importation sont stockés.
- FOLDER_NAME: dossier dans lequel les fichiers d'importation sont stockés.
- THREAD_NUMBER: nombre de threads utilisés par Cloud SQL pour importer des fichiers en parallèle. Par exemple, si vous souhaitez importer trois fichiers à la fois en parallèle, spécifiez
3
comme valeur de ce paramètre. - DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL à partir de laquelle l'importation est effectuée. Vous ne devez spécifier qu'une seule base de données.
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 des autorisations IAM que vous avez définies dans la section Rôles et autorisations requis pour l'importation dans Cloud SQL pour PostgreSQL, utilisez
gcloud storage buckets remove-iam-policy-binding
pour les supprimer.
Remplacez INSTANCE_NAME par le nom de votre instance Cloud SQL.
Dans le résultat, recherchez la valeur associée au champ serviceAccountEmailAddress
.
REST v1
Pour importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL, procédez comme suit:
- Créez un bucket Cloud Storage :
Effectuez les remplacements suivants :gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
. - PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous créez.
- LOCATION_NAME: emplacement du bucket dans lequel vous souhaitez stocker les fichiers que vous importez. Exemple :
us-east1
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
Importez les fichiers dans le bucket.
Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets à partir de fichiers.
- 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 des données provenant de plusieurs fichiers en parallèle dans Cloud SQL:
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous avez créé.
- INSTANCE_NAME: nom de l'instance Cloud SQL dans laquelle vous importez des fichiers en parallèle.
- BUCKET_NAME: nom du bucket Cloud Storage.
- BUCKET_PATH: chemin d'accès au bucket où les fichiers d'importation sont stockés.
- FOLDER_NAME: dossier dans lequel les fichiers d'importation sont stockés.
- DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL à partir de laquelle l'importation est effectuée. Vous ne devez spécifier qu'une seule base de données.
- THREAD_NUMBER: nombre de threads utilisés par Cloud SQL pour importer des fichiers en parallèle. Par exemple, si vous souhaitez importer trois fichiers à la fois en parallèle, spécifiez
3
comme valeur de ce paramètre.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corps JSON de la requête :
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
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 API Cloud SQL Admin.importContext.importUser
.- Si vous n'avez pas besoin des autorisations IAM que vous avez définies dans la section Rôles et autorisations requis pour l'importation dans Cloud SQL pour PostgreSQL, utilisez
gcloud storage buckets remove-iam-policy-binding
pour les supprimer.
REST v1beta4
Pour importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL, procédez comme suit:
- Créez un bucket Cloud Storage :
Effectuez les remplacements suivants :gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
. - PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous créez.
- LOCATION_NAME: emplacement du bucket dans lequel vous souhaitez stocker les fichiers que vous importez. Exemple :
us-east1
- BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
Importez les fichiers dans le bucket.
Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer des objets à partir de fichiers.
- 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 des données provenant de plusieurs fichiers en parallèle dans Cloud SQL:
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_NAME: nom du projet Google Cloud contenant le bucket Cloud Storage que vous avez créé.
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous importez des fichiers en parallèle.
- BUCKET_NAME: nom du bucket Cloud Storage.
- BUCKET_PATH: chemin d'accès au bucket où les fichiers d'importation sont stockés.
- FOLDER_NAME: dossier dans lequel les fichiers d'importation sont stockés.
- DATABASE_NAME: nom de la base de données dans l'instance Cloud SQL à partir de laquelle l'importation est effectuée. Vous ne devez spécifier qu'une seule base de données.
- THREAD_NUMBER: nombre de threads utilisés par Cloud SQL pour importer des fichiers en parallèle. Par exemple, si vous souhaitez importer trois fichiers à la fois en parallèle, spécifiez
3
comme valeur de ce paramètre.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corps JSON de la requête :
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
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 API Cloud SQL Admin.importContext.importUser
.- Si vous n'avez pas besoin des autorisations IAM que vous avez définies dans la section Rôles et autorisations requis pour l'importation dans Cloud SQL pour PostgreSQL, utilisez
gcloud storage buckets remove-iam-policy-binding
pour les supprimer.
Limites
- Si vous spécifiez trop de threads lorsque vous importez ou exportez des données à partir de plusieurs fichiers en parallèle, vous risquez d'utiliser plus de mémoire que possède votre instance Cloud SQL. Dans ce cas, un message d'erreur interne s'affiche. Vérifiez l'utilisation de la mémoire de votre instance et augmentez la taille de l'instance, si nécessaire. Pour en savoir plus, consultez la page À propos des paramètres d'instance.
- Lors d'une exportation, les virgules dans les noms de bases de données ou de tables dans les champs
databases
outables
ne sont pas acceptées. - Assurez-vous de disposer de suffisamment d'espace disque pour le téléchargement du fichier de vidage initial. Dans le cas contraire, une erreur
no space left on disk
s'affiche. - Si votre instance ne dispose que d'un seul processeur virtuel, vous ne pouvez pas importer ni exporter plusieurs fichiers en parallèle. Le nombre de processeurs virtuels de votre instance ne peut pas être inférieur au nombre de threads que vous utilisez pour l'opération d'importation ou d'exportation, et le nombre de threads doit être au moins égal à deux.
- L'utilitaire
pg_dump
ne peut pas fragmenter les tables que vous exportez. Par conséquent, si une table est très volumineuse, elle peut devenir un goulot d'étranglement pour la vitesse de l'opération d'exportation.
Étapes suivantes
- Apprenez à vérifier l'état des opérations d'importation et d'exportation.
- Découvrez comment annuler l'importation et l'exportation de données.
- Découvrez les bonnes pratiques pour l'importation et l'exportation de données.
- Découvrez les problèmes connus liés aux importations et aux exportations.