Exporter et importer des fichiers en parallèle

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

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

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 :

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'utilitaire dumpInstance.

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:

  1. Créer un bucket Cloud Storage
  2. 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
  3. Remplacez INSTANCE_NAME par le nom de votre instance Cloud SQL.

    Dans le résultat, recherchez la valeur associée au champ serviceAccountEmailAddress.

  4. Pour accorder le rôle IAM storage.objectAdmin au compte de service, utilisez la commande gcloud 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.
  5. 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'outil mysqldump.

    Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage au format de vidage MySQL Shell.

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

REST v1

Pour exporter des données de Cloud SQL vers plusieurs fichiers en parallèle, procédez comme suit:

  1. Créez un bucket Cloud Storage :
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Effectuez les remplacements suivants :
    • 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
  2. 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.
  3. 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 :

  4. Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage au format de vidage MySQL Shell.

  5. 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.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page API Cloud SQL Admin.

REST v1beta4

Pour exporter des données de Cloud SQL vers plusieurs fichiers en parallèle, procédez comme suit:

  1. Créez un bucket Cloud Storage :
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    Effectuez les remplacements suivants :
    • 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
  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 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 :

  4. Une fois l'exportation terminée, vos fichiers doivent se trouver dans un dossier du bucket Cloud Storage au format de vidage MySQL Shell.

  5. 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.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page API Cloud SQL Admin.

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 :

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:

  1. Créez un bucket Cloud Storage.
  2. 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.

  3. 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
  4. Remplacez INSTANCE_NAME par le nom de votre instance Cloud SQL.

    Dans le résultat, recherchez la valeur associée au champ serviceAccountEmailAddress.

  5. Pour accorder le rôle IAM storage.objectAdmin au compte de service, utilisez l'utilitaire gcloud 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.
  6. 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.

  7. 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 gcloud storage buckets remove-iam-policy-binding.

REST v1

Pour importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL, procédez comme suit:

  1. Créez un bucket Cloud Storage :
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Effectuez les remplacements suivants :
    • 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
  2. 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.

  3. 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.
  4. 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.
  5. 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 gcloud storage buckets remove-iam-policy-binding.

REST v1beta4

Pour importer des données à partir de plusieurs fichiers en parallèle dans Cloud SQL, procédez comme suit:

  1. Créez un bucket Cloud Storage :
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Effectuez les remplacements suivants :
    • 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
  2. 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.

  3. 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.
  4. 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.
  5. 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 gcloud storage buckets remove-iam-policy-binding.

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 ou tables 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 ou ALTER 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