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 MySQL
Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour MySQL
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 MySQL
Pour créer un fichier de vidage SQL, exportez les données de Cloud SQL vers Cloud Storage. Une fois que le fichier se trouve dans Cloud Storage, vous pouvez l'importer dans une autre base de données Cloud SQL. Vous pouvez également télécharger des données depuis Cloud Storage vers votre environnement local si vous souhaitez y accéder localement.L'exportation depuis Cloud SQL utilise l'utilitaire mysqldump avec les options --single-transaction
et --hex-blob
. Avec l'option --single-transaction
, mysqldump
lance une transaction avant son exécution. Plutôt que de verrouiller l'ensemble de la base de données, cela permet à mysqldump
de lire la base de données dans son état actuel, ce qui permet un vidage de données cohérent.
Si le fichier de dump SQL contient des clauses DEFINER (views, triggers, stored_procedures, etc…), selon l'ordre d'exécution de ces instructions, l'utilisation de ce fichier pour l'importation peut échouer. Apprenez-en plus sur l'utilisation de DEFINER et les solutions de contournement potentielles dans 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, cliquez sur Une ou plusieurs bases de données dans cette instance pour exporter des bases de données spécifiques.
- Dans le menu déroulant, sélectionnez les bases de données à partir desquelles vous souhaitez exporter les données.
- 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
gcloud storage buckets add-iam-policy-binding
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 mysqldump.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, révoquez-le maintenant.
REST v1
- Créez un bucket pour l'exportation de la manière suivante :
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_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 ci-dessous, 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 fichier 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
- 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.
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 :
REST v1beta4
- Créez un bucket pour l'exportation de la manière suivante :
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_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 ci-dessous, 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 fichier 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
- Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
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 :
Exporter depuis votre serveur MySQL local à l'aide de mysqldump
Si vous exportez des données à partir d'une base de données MySQL sur site pour les importer dans une base de données Cloud SQL, vous devez utiliser l'utilitaire mysqldump
avec les options suivantes :
--databases
Vous devez utiliser l'option--databases
pour spécifier explicitement une liste de bases de données à exporter. Cette liste ne doit pas contenir la base de données systèmemysql
.--hex-blob
Si la base de données contient des champs binaires, vous devez utiliser cette option pour garantir que ces champs seront importés correctement.--set-gtid-purged=OFF
Les informations GTID ne doivent pas être incluses dans le fichier de dump SQL, et la journalisation binaire ne doit pas être désactivée par le fichier de dump SQL. (Non requis pour MySQL 5.5 ni pour la réplication externe.)--single-transaction
Démarre une transaction avant l'exécution. Plutôt que de verrouiller l'ensemble de la base de données, cela permet à mysqldump de lire la base de données dans son état actuel, ce qui permet un vidage de données cohérent.
À partir d'une ligne de commande, exécutez mysqldump
:
mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \ --hex-blob --single-transaction --set-gtid-purged=OFF \ --default-character-set=utf8mb4 > SQL_FILE.sql
Pour obtenir de l'aide sur mysqldump
, consultez la documentation de référence de mysqldump.
Réplication externe vers Cloud SQL pour MySQL
Pour créer un fichier de vidage à utiliser dans une configuration de serveur externe, consultez la page Duplication depuis un serveur externe.
Importer des données dans Cloud SQL pour MySQL
Rôles et autorisations requis pour l'importation 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 un fichier de vidage SQL dans Cloud SQL pour MySQL
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 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
gcloud storage buckets add-iam-policy-binding
pour accorder lestorage.objectAdmin
rôle IAM au compte de service sur le bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser les autorisations IAM.gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE-ACCOUNT \ --role=roles/storage.objectAdmin
- 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
gcloud storage buckets remove-iam-policy-binding
.
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 MySQL sur site :
- Créez un fichier de vidage SQL.
- Créez un bucket dans Cloud Storage.
- Importez le fichier de vidage SQL dans le bucket Cloud Storage.
- Si vous importez des données à partir d'une autre instance Cloud SQL, consultez les instructions de la section Exporter des données de Cloud SQL vers un fichier de vidage SQL.
- 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 obtenir la liste complète des paramètres de cette requête, consultez la page instances:import. - 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 MySQL sur site :
- Créez un fichier de vidage SQL.
- Créez un bucket dans Cloud Storage.
- Importez le fichier de vidage SQL dans le bucket Cloud Storage.
- Si vous importez des données à partir d'une autre instance Cloud SQL, consultez les instructions de la section Exporter des données de Cloud SQL vers un fichier de vidage SQL.
- 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 obtenir la liste complète des paramètres de cette requête, consultez la page instances:import. - 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.