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 de Cloud SQL pour MySQL vers plusieurs fichiers en parallèle
Les sections suivantes contiennent des informations sur l'exportation de données de Cloud SQL pour MySQL vers plusieurs fichiers en parallèle.
Rôles et autorisations requis pour exporter des données de Cloud SQL pour MySQL 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'utilitairedumpInstance
.
Une fois que les fichiers se trouvent dans Cloud Storage, vous pouvez les importer dans une autre base de données Cloud SQL. Si vous souhaitez accéder aux données des fichiers localement, téléchargez-les depuis Cloud Storage dans votre environnement local.
Si vos fichiers contiennent des clauses DEFINER (views, triggers, stored_procedures, etc...), selon l'ordre d'exécution de ces instructions, l'utilisation de ces fichiers pour l'importation peut échouer. Apprenez-en plus sur l'utilisation de DEFINER et les solutions de contournement potentielles dans 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 l'utilitairegsutil iam
. 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 (facultatif): nom des bases de données dans l'instance Cloud SQL à partir de laquelle l'exportation est effectuée. Si vous ne spécifiez aucune base de données, Cloud SQL exporte toutes les bases de données de l'instance.
- 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'outilmysqldump
.Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage au format de vidage MySQL Shell.
- 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 MySQL, 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 :
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Effectuez les remplacements suivants :- 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. Par exemple,
us-east1
. - BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
.
- 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 (facultatif): nom des bases de données dans l'instance Cloud SQL à partir de laquelle l'exportation est effectuée. Si vous ne spécifiez aucune base de données, Cloud SQL exporte toutes les bases de données de l'instance.
- 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 MySQL, supprimez-le.
Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage au format de vidage MySQL Shell.
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 :
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Effectuez les remplacements suivants :- 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. Par exemple,
us-east1
. - BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
.
- 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 (facultatif): nom des bases de données dans l'instance Cloud SQL à partir de laquelle l'exportation est effectuée. Si vous ne spécifiez aucune base de données, Cloud SQL exporte toutes les bases de données de l'instance.
- 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 MySQL, supprimez-le.
Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage au format de vidage MySQL Shell.
Importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL pour MySQL
Les sections suivantes contiennent des informations sur l'importation de données à partir de plusieurs fichiers en parallèle avec Cloud SQL pour MySQL.
Rôles et autorisations requis pour importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL pour MySQL
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 MySQL
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 loadDump
.
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'utilitairegsutil iam
. 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 (facultatif): nom des bases de données de l'instance Cloud SQL à partir de laquelle l'importation est effectuée. Si vous ne spécifiez aucune base de données, Cloud SQL importe toutes les bases de données de l'instance.
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 MySQL, supprimez-les à l'aide de
gsutil iam
.
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 :
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Effectuez les remplacements suivants :- 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. Par exemple,
us-east1
. - BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
.
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 (facultatif): nom des bases de données de l'instance Cloud SQL à partir de laquelle l'importation est effectuée. Si vous ne spécifiez aucune base de données, Cloud SQL importe toutes les bases de données de l'instance.
- 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], "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 obtenir la liste complète des paramètres de cette requête, consultez la page API Cloud SQL Admin.- 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 MySQL, supprimez-les à l'aide de
gsutil iam
.
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 :
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Effectuez les remplacements suivants :- 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. Par exemple,
us-east1
. - BUCKET_NAME: nom du bucket, soumis à des exigences de dénomination. Exemple :
my-bucket
.
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 (facultatif): nom des bases de données de l'instance Cloud SQL à partir de laquelle l'importation est effectuée. Si vous ne spécifiez aucune base de données, Cloud SQL importe toutes les bases de données de l'instance.
- 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], "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 obtenir la liste complète des paramètres de cette requête, consultez la page API Cloud SQL Admin.- 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 MySQL, supprimez-les à l'aide de
gsutil iam
.
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.
- Si vous écrivez des instructions LDD (langage de définition de données) telles que
CREATE
,DROP
ouALTER
lors d'une opération d'exportation, l'opération peut échouer ou les données exportées peuvent être incohérentes avec l'instantané de la récupération à un moment précis - Si une opération d'importation échoue, il se peut que des données soient partiellement importées. Pour les instructions LDD, MySQL effectue des commits automatiquement. Dans ce cas, avant d'importer à nouveau les données, nettoyez les données partielles.
É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.