Exportez et importez des données à l'aide de fichiers de vidage SQL.

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 PostgreSQL

Rôles et autorisations requis pour l'exportation à partir de Cloud SQL pour PostgreSQL

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 vers un fichier de vidage SQL à partir de Cloud SQL pour PostgreSQL

Lorsque vous utilisez Cloud SQL pour effectuer une exportation, que ce soit depuis la console Google Cloud, gcloud CLI ou l'API, vous faites appel à l'utilitaire pg_dump en spécifiant les options nécessaires pour garantir la validité du fichier d'exportation obtenu pour sa réimportation dans Cloud SQL.

Si vous envisagez d'importer vos données dans Cloud SQL, vous devez suivre les instructions fournies dans la section Exporter des données à partir d'un serveur de base de données externe afin que votre fichier de vidage SQL soit correctement formaté pour 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

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Exporter.
  4. Dans la section Format de fichier, cliquez sur SQL pour créer un fichier de vidage SQL.
  5. Dans la section Données à exporter, sélectionnez la base de données à utiliser pour l'exportation dans le menu déroulant.
  6. Dans la section Destination, sélectionnez Parcourir pour rechercher un bucket ou un dossier Cloud Storage pour l'exportation.
  7. Cliquez sur Exporter pour démarrer l'exportation.

gcloud

  1. Créez un bucket Cloud Storage.
  2. 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 champ serviceAccountEmailAddress dans le résultat.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Utilisez gsutil iam pour accorder le rôle IAM storage.objectAdmin au compte de service. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  4. 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 pg_dump.

    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.

  5. Si vous n'avez pas besoin de conserver le rôle IAM que vous avez défini précédemment, revoke maintenant.

REST v1

  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 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 votre base de données :

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

  4. 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.
Pour obtenir la liste complète des paramètres de cette requête, consultez la page instances:export.

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

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

Importer des données dans Cloud SQL pour PostgreSQL

Rôles et autorisations requis pour l'importation dans 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 un fichier de vidage SQL dans Cloud SQL pour PostgreSQL

Les fichiers SQL sont des fichiers au format texte brut comportant une séquence de commandes SQL.

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Import (Importer).
  4. 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).

  5. Pour le paramètre Format, sélectionnez SQL.
  6. 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.

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

  8. Cliquez sur Importer pour démarrer l'importation.

gcloud

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

  3. Décrivez l'instance dans laquelle vous réalisez l'importation :
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copiez le champ serviceAccountEmailAddress.
  5. Utilisez gsutil iam pour accorder le storage.objectAdmin rôle IAM au compte de service sur le bucket.
    gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \
    gs://BUCKET_NAME
      
    Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser les autorisations IAM.
  6. 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 commande sql 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.

  7. Si vous n'avez pas besoin de conserver les autorisations IAM que vous avez définies précédemment, supprimez-les en utilisant gsutil iam.

REST v1

  1. 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 PostgreSQL sur site :
      1. Créez un fichier de vidage SQL en suivant les instructions de la section Exporter des données à l'aide de pg_dump.
      2. Créez un bucket dans Cloud Storage en suivant les instructions de la section Créer des buckets.
      3. Importez le fichier de vidage SQL dans le bucket Cloud Storage à l'aide de la procédure décrite dans la section Importer des objets.
  2. Créer un bucket Cloud Storage
  3. 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.

  4. Attribuez à votre instance les rôles IAM legacyBucketWriter et objectViewer pour votre bucket. Pour obtenir de l'aide sur la définition des autorisations IAM, consultez la page Utiliser des autorisations IAM.
  5. 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 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 instances:import.
  6. 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

  1. 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 PostgreSQL sur site :
      1. Créez un fichier de vidage SQL en suivant les instructions de la section Exporter des données à l'aide de pg_dump.
      2. Créez un bucket dans Cloud Storage en suivant les instructions de la section Créer des buckets.
      3. Importez le fichier de vidage SQL dans le bucket Cloud Storage à l'aide de la procédure décrite dans la section Importer des objets.
  2. Créer un bucket Cloud Storage
  3. 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.

  4. 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.
  5. 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 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 instances:import.
  6. 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