Exporter des données depuis Cloud SQL

Cette page explique comment exporter des données à partir d'instances Cloud SQL ou d'un serveur de base de données non géré par Cloud SQL.

Exportez des données Cloud SQL vers un fichier de vidage CSV ou SQL dans Cloud Storage. Vous pouvez ensuite importer le fichier dans une autre base de données MySQL dans 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.

Pour exporter des données vers Cloud Storage, le compte de service de l'instance doit avoir le rôle IAM storage.objectAdmin défini dans le projet. Pour plus d'informations, consultez la page Cloud Identity and Access Management pour Cloud Storage.

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 en termes d'exportation de données, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.

Vous pouvez exporter un fichier CSV. Vous pouvez également exporter un fichier de vidage SQL, par exemple si vous souhaitez exporter vers une autre base de données SQL.

Exportation standard et exportation sans serveur

Pour une exportation standard depuis Cloud SQL, l'exportation est exécutée tant que la base de données est en ligne. Lorsque les bases de données exportées sont plus petites, l'impact est susceptible d'être minime. Toutefois, en cas de bases de données ou d'objets volumineux, tels que des BLOB dans la base de données, il est possible que l'exportation réduise les performances de la base de données. Cela peut avoir un impact sur le temps nécessaire pour exécuter des requêtes et des opérations sur la base de données. Une fois que vous avez lancé une exportation, il n'est pas possible de l'arrêter si votre base de données commence à répondre lentement.

Pour éviter les réponses lentes lors d'une exportation, vous pouvez utiliser une exportation sans serveur. Avec l'exportation sans serveur, Cloud SQL crée une instance temporaire distincte pour décharger l'opération d'exportation. Le déchargement de l'opération d'exportation permet aux bases de données de l'instance principale de continuer à diffuser des requêtes et d'effectuer des opérations au débit de performances habituel. Une fois l'exportation des données terminée, l'instance temporaire est automatiquement supprimée.

Une exportation sans serveur prend plus de temps qu'une exportation standard, car la création de l'instance temporaire prend du temps. La durée minimale est de 5 minutes, mais pour les bases de données plus volumineuses, cela peut prendre plus de temps. Prenez en compte l'impact sur le temps et les performances avant de déterminer le type d'exportation à utiliser.

Vous pouvez utiliser l'exportation sans serveur sur une instance principale ou une instance dupliquée avec accès en lecture.

Les exportations aux formats CSV et mysqldump se comportent de la même manière dans Cloud SQL que si elles provenaient d'une autre base de données MySQL. La base de données ne se verrouille pas lors de l'opération d'exportation, sauf si vous utilisez l'option --master-data.

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 en matière d'exportation de données, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.

Utiliser le même mode SQL pour l'importation et l'exportation

Le paramètre Mode SQL a une incidence sur la façon dont Cloud SQL interprète les requêtes SQL. Par exemple, si vous exportez depuis une base de données sans SQL Strict, puis que vous essayez d'importer dans Cloud SQL (qui active le mode SQL Strict par défaut), l'importation peut échouer. La bonne pratique consiste à utiliser le même mode SQL pour l'importation et pour l'exportation. Pour éviter tout problème de compatibilité, examinez les modes SQL sur les bases de données source et cible. Portez une attention particulière aux options qui activent le mode SQL Strict. Si le mode SQL Strict n'est pas activé sur votre base de données, vous devrez probablement le supprimer dans Cloud SQL. Si vous supprimez l'option SQL Strict, vous devez en définir une autre à la place. Pour vérifier que le mode défini sur votre instance Cloud SQL est le bon, exécutez la commande SELECT @@GLOBAL.sql_mode;.

Exporter des données de Cloud SQL vers un fichier de vidage SQL

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.

Avant de commencer

Cette procédure nécessite l'exportation d'un fichier vers Cloud Storage. Pour exporter des données vers Cloud Storage, le compte de service de l'instance doit disposer des rôles IAM storage.objectAdmin définis dans le projet. Pour obtenir de l'aide sur les rôles IAM, consultez la page Cloud Identity and Access Management pour Cloud Storage.

Vous trouverez le nom du compte de service de l'instance dans Google Cloud Console sur la page Présentation de votre instance. Pour vérifier les rôles de votre bucket Cloud Storage, servez-vous de l'outil gsutil pour inspecter le bucket :

gsutil iam get gs://[BUCKET_NAME]

En savoir plus sur l'utilisation d'IAM avec des buckets.

Exporter des données vers un fichier de vidage SQL dans Cloud Storage

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

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur l'instance à partir de laquelle vous souhaitez exporter des données pour ouvrir la page Présentation correspondante.
  3. Dans la barre de boutons, cliquez sur EXPORTER.
  4. Sous Format de fichier, cliquez sur SQL pour créer un fichier de vidage SQL.
  5. Pour exporter des bases de données spécifiques, sous Données à exporter, cliquez sur Une ou plusieurs bases de données dans cette instance.
  6. Dans le menu déroulant, sélectionnez les bases de données à partir desquelles vous souhaitez exporter les données.
  7. Sous Destination, sélectionnez Parcourir pour rechercher un bucket ou un dossier Cloud Storage pour l'exportation.
  8. Cliquez sur Exporter pour démarrer l'exportation.

gcloud

  1. Créez un bucket Cloud Storage, si ce n'est pas déjà fait.

    Pour obtenir de l'aide concernant la création d'un bucket, consultez la page Créer des buckets de stockage.

  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer un objet.

  3. Décrivez l'instance à partir de laquelle vous souhaitez exporter :
      gcloud sql instances describe [INSTANCE_NAME]
      
  4. Copiez le champ "serviceAccountEmailAddress".
  5. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service du bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  6. Exportez la base de données :
      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 commande sql export sql.

  7. 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 v1beta4

  1. 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.

  2. 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.
  3. 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 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://www.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 :

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Exporter des données depuis Cloud SQL vers un fichier CSV

Vous pouvez exporter vos données au format CSV, qui peut être utilisé par d'autres outils et environnements. Les exportations ont lieu au niveau de la base de données. Lors d'une exportation au format CSV, vous pouvez spécifier les schémas à exporter. Tout schéma situé à un niveau inférieur à celui de la base de données peut être exporté.

Avant de commencer

Cette procédure nécessite l'exportation d'un fichier vers Cloud Storage. Pour exporter des données vers Cloud Storage, le compte de service de l'instance doit disposer des rôles IAM storage.objectAdmin définis dans le projet. Pour obtenir de l'aide sur les rôles IAM, consultez la page Cloud Identity and Access Management pour Cloud Storage.

Vous trouverez le nom du compte de service de l'instance dans Google Cloud Console sur la page Présentation de votre instance. Pour vérifier les rôles de votre bucket Cloud Storage, servez-vous de l'outil gsutil pour inspecter le bucket :

gsutil iam get gs://[BUCKET_NAME]

En savoir plus sur l'utilisation d'IAM avec des buckets.

Exporter des données vers un fichier CSV dans Cloud Storage

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

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Cliquez sur l'instance pour ouvrir la page Présentation correspondante.
  3. Cliquez sur EXPORTER.
  4. Sous Emplacement de l'exportation dans Cloud Storage, sélectionnez un bucket ou un dossier Cloud Storage pour votre exportation.
  5. Dans le champ Nom, indiquez un nom pour votre fichier d'exportation et cliquez sur Sélectionner.

    Vous pouvez utiliser l'extension de fichier .gz pour obtenir un fichier d'exportation compressé.

  6. Définissez le Format sur CSV.
  7. Cliquez sur Afficher les options avancées.
  8. Sous Base de données, sélectionnez le nom de la base de données dans le menu déroulant.
  9. Sous Requête SQL, saisissez une requête SQL pour spécifier la table à partir de laquelle exporter les données.

    Par exemple, pour exporter l'intégralité du contenu de la table entries de la base de données guestbook, vous devez saisir :

    SELECT * FROM guestbook.entries;
    Votre requête doit spécifier une table de la base de données spécifiée ; vous ne pouvez pas exporter une base de données entière au format CSV.

  10. Cliquez sur Exporter pour démarrer l'exportation.
  11. La boîte de dialogue Exporter la base de données ? s'ouvre avec un message indiquant que le processus d'exportation peut prendre une heure ou plus pour les bases de données volumineuses. Pendant l'exportation, la seule opération que vous pouvez effectuer sur l'instance est d'afficher ses informations. Vous ne pouvez pas arrêter l'exportation une fois celle-ci démarrée. Si vous souhaitez lancer une exportation, cliquez sur EXPORTER. Sinon, cliquez sur ANNULER.

gcloud

  1. Créez un bucket Cloud Storage, si ce n'est pas déjà fait.

    Pour obtenir de l'aide concernant la création d'un bucket, consultez la page Créer des buckets de stockage.

  2. Importez le fichier dans le bucket.

    Pour obtenir de l'aide concernant l'importation de fichiers dans des buckets, consultez la page Importer un objet.

  3. Décrivez l'instance à partir de laquelle vous souhaitez exporter :
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service du bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  5. Exportez la base de données :
    gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME]
                                --offload
                                --query=[SELECT_QUERY]
    

    Pour plus d'informations sur l'utilisation de la commande export csv, consultez la page de référence de la commande sql export csv.

  6. 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 v1beta4

  1. 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.

  2. 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.
  3. 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_csv_file : chemin d'accès au fichier CSV
    • database_name : 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.
    • select_query : requête SQL pour l'exportation

    Méthode HTTP et URL :

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corps JSON de la requête :

    {
     "exportContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "databases": ["database_name"],
          "offload": true | false
          "csvExportOptions":
           {
               "selectQuery":"select_query"
           }
       }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    Si votre requête "select" spécifie une base de données, la propriété databases est ignorée.

  4. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, révoquez-le maintenant.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Exporter au format CSV revient à exécuter l'instruction SQL suivante :

  SELECT [QUERY] INTO OUTFILE ... CHARACTER SET 'utf8mb4'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
        ESCAPED BY '\\' LINES TERMINATED BY '\n'

Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

Exporter des données de votre serveur MySQL local vers un fichier CSV

Pour exporter une base de données MySQL qui n'est pas gérée par Cloud SQL vers un fichier CSV, exécutez la commande suivante pour l'importer ultérieurement dans Cloud SQL :

mysql --host=[INSTANCE_IP] --user=[USER_NAME] --password [DATABASE] \
-e " SELECT * FROM [TABLE] INTO OUTFILE '[FILE_NAME]' CHARACTER SET 'utf8mb4'
     FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' "

Exporter des données à l'aide de mysqldump

Si vous exportez des données à partir d'une base de données MySQL sur site ou d'une base de données Cloud SQL à 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ème mysql.
  • --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 vidage SQL, et la journalisation binaire ne doit pas être désactivée par le fichier de vidage SQL. (Non requis pour MySQL 5.5 ni pour la réplication externe.)
  • --single-transactionEffectuer une réplication depuis un serveur externe

Configuration standard

À 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

Pour créer un fichier de vidage à utiliser dans une configuration de serveur externe, consultez la page Duplication depuis un serveur externe.

Étapes suivantes