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 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 :

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 pg_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:

  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: 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'outil pg_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.

  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 PostgreSQL, 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: 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 :

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

  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 PostgreSQL, 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: 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 :

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

  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 PostgreSQL, 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 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 :

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:

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

  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 PostgreSQL, utilisez gcloud storage buckets remove-iam-policy-binding pour les supprimer.

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: 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é importContext.importUser.

    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 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:

  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: 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é importContext.importUser.

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