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

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

  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, cliquez sur Une ou plusieurs bases de données dans cette instance pour exporter des bases de données spécifiques.
  6. Dans le menu déroulant, sélectionnez les bases de données à partir desquelles vous souhaitez exporter les données.
  7. Dans la section 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.
  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 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.

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

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

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

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

  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 rôle IAM storage.objectAdmin au compte de service du 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 des 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.

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

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