Bonnes pratiques pour l'importation et l'exportation de données

Cette page décrit les bonnes pratiques relatives à l'importation et à l'exportation de données avec Cloud SQL. Pour obtenir des instructions détaillées sur l'importation de données dans Cloud SQL, consultez la page Importer des données.

Pour exporter des données depuis Cloud SQL afin de les utiliser dans une instance MySQL que vous gérez, consultez la page Exporter des données.

Bonnes pratiques pour l'importation et l'exportation

Voici les bonnes pratiques à adopter lors de l'importation et de l'exportation de données :

Ne pas utiliser les buckets "Paiements" du demandeur Cloud Storage

Vous ne pouvez pas utiliser de buckets Cloud Storage pour lesquels les paiements du demandeur sont activés pour réaliser des importations et des exportations depuis Cloud SQL.

Utiliser les indicateurs appropriés lors de la création d'un fichier de vidage SQL

Si vous n'utilisez pas les bonnes options lorsque vous exportez vos données vers un fichier de vidage SQL, l'importation peut échouer. Pour en savoir plus sur la création d'un fichier de vidage SQL à importer dans Cloud SQL, consultez la section Créer un fichier de vidage SQL.

Compresser les données afin de réduire les coûts

Cloud SQL permet d'importer et d'exporter des fichiers compressés ou non. Grâce à la compression, vous pouvez économiser un espace de stockage considérable sur Cloud Storage et réduire les coûts de stockage, en particulier lorsque vous exportez des instances volumineuses.

Lorsque vous exportez un fichier de vidage SQL ou CSV, utilisez l'extension de fichier .gz pour compresser les données. Lorsque vous importez un fichier avec une extension .gz, il est automatiquement décompressé.

Réduire les processus d'importation et d'exportation de longue durée

L'exécution d'opérations d'importation et d'exportation dans Cloud SQL à l'aide de la fonctionnalité d'importation (avec un bucket Cloud Storage) peut prendre beaucoup de temps selon la taille de la base de données. Cela peut avoir les conséquences suivantes :

  • Vous ne pouvez pas arrêter une opération de longue durée.
  • Vous ne pouvez effectuer qu'une seule opération d'importation ou d'exportation à la fois pour chaque instance.

Vous pouvez réduire le temps nécessaire à l'exécution de chaque opération en utilisant la fonctionnalité d'importation ou d'exportation Cloud SQL avec de plus petits lots de données.

Pour les exportations, vous pouvez utiliser l'exportation sans serveur afin de minimiser l'impact sur les performances de la base de données et d'autoriser d'autres opérations sur votre instance pendant l'exécution d'une exportation.

Pour obtenir plus de conseils, consultez la section Diagnostiquer les problèmes liés aux instances Cloud SQL.

Utiliser InnoDB

InnoDB est le seul moteur de stockage compatible avec les instances MySQL.

Vous pouvez convertir vos tables du format MyISAM au format InnoDB en redirigeant la sortie de "mysqldump" via un script sed, comme décrit ci-dessous :

mysqldump --databases [DATABASE_NAME] \
-h [INSTANCE_IP] -u [USERNAME] -p [PASSWORD] \
--hex-blob --default-character-set=utf8mb4 | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' > [DATABASE_FILE].sql

Dépannage

Cliquez sur les liens du tableau pour en savoir plus :

Pour ce problème... Le problème peut être... Essayez ce qui suit...
Impossible d'afficher l'état de l'opération. L'interface utilisateur n'affiche que les opérations réussies ou échouées. Exécutez ces commandes de base de données pour en savoir plus.
Le message 408 Error (Timeout) s'affiche pendant l'exportation. L'exportation au format SQL peut prendre beaucoup de temps en fonction de la taille de la base de données et du contenu exporté. Effectuez plusieurs exportations CSV pour réduire la taille de chaque opération.
L'exportation au format CSV a fonctionné, mais pas l'exportation au format SQL. L'exportation au format SQL est plus susceptible de générer des problèmes de compatibilité avec Cloud SQL. Exportez uniquement les données dont vous avez besoin au format CSV.
L'exportation prend trop de temps. Cloud SQL n'est pas compatible avec les opérations synchrones simultanées. Utilisez le déchargement des exportations. En savoir plus
L'importation prend trop de temps. Un trop grand nombre de connexions actives peut interférer avec les opérations d'importation. Fermez les connexions inutilisées ou redémarrez l'instance Cloud SQL avant de lancer une opération d'importation.
Error 1412: Table definition has changed. La table a été changée lors de l'exportation. Supprimez toutes les instructions de changement de table de l'opération de vidage.
Échec de l'importation. Le fichier exporté peut contenir des utilisateurs de base de données qui n'existent pas encore. Créez les utilisateurs de la base de données avant d'effectuer l'importation.
Fermeture de la connexion lors de l'exportation. La requête doit produire des données dans les sept premières minutes. Testez la requête manuellement. En savoir plus
Erreur inconnue lors de l'exportation. Problème de bande passante possible. Assurez-vous que l'instance et le bucket Cloud Storage se trouvent dans la même région.
Vous souhaitez automatiser les exportations. Cloud SQL ne permet pas d'automatiser les exportations. Créez votre propre pipeline pour exécuter cette fonctionnalité. En savoir plus
ERROR_RDBMS: system error occurred Autorisations Cloud Storage ou table inexistante. Vérifiez les autorisations OU assurez-vous que la table existe.
Erreur lors de l'importation : la table n'existe pas. Une table obligatoire n'existe pas encore. Désactivez FOREIGN_KEY_CHECKS au début de l'importation.

Impossible d'afficher l'état de l'opération

Vous ne pouvez pas voir l'état d'une opération en cours.

Cause possible

Une fois l'opération terminée, Google Cloud Console ne signale que les réussites ou les échecs, mais n'est pas conçu pour renvoyer des avertissements.

Solutions possibles

Connectez-vous à la base de données et exécutez SHOW WARNINGS.


Erreur 408 (Expiration du délai) lors de l'exportation

Le message d'erreur 408 Error (Timeout) s'affiche lors de l'exécution d'une tâche d'exportation dans Cloud SQL.

Cause possible

Les formats CSV et SQL sont exportés de manière différente. Comme le format SQL exporte l'intégralité de la base de données, l'exportation prend probablement plus de temps. Le format CSV vous permet de définir les éléments de la base de données à exporter.

Solutions possibles

Utilisez le format CSV et exécutez plusieurs tâches d'exportation plus petites pour réduire la taille et la durée de chaque opération.


Échec de l'exportation au format CSV

L'exportation au format CSV a fonctionné, mais pas l'exportation au format SQL.

Cause possible

Les formats CSV et SQL sont exportés de manière différente. Comme le format SQL exporte l'intégralité de la base de données, l'exportation prend probablement plus de temps. Le format CSV vous permet de définir les éléments de la base de données à exporter.

Solutions possibles

Exportez uniquement les données dont vous avez besoin au format CSV.


L'exportation prend trop de temps.

L'exportation prend trop de temps et bloque les autres opérations.

Cause possible

Cloud SQL n'est pas compatible avec les opérations synchrones simultanées.

Solutions possibles

Essayez d'exporter des ensembles de données plus petits.


L'importation prend trop de temps.

L'importation prend trop de temps, ce qui bloque d'autres opérations.

Cause possible

Un trop grand nombre de connexions actives peut interférer avec les opérations d'importation. Les connexions consomment des ressources de processeur et de mémoire, limitant ainsi leur disponibilité.

Solutions possibles

Fermez les opérations inutilisées. Examinez l'utilisation du processeur et de la mémoire pour vérifier que vous disposez de ressources suffisantes. Le meilleur moyen de s'assurer de la présence d'un nombre maximal de ressources pour l'opération d'importation consiste à redémarrer l'instance avant de lancer l'importation. Un redémarrage :

  • ferme toutes les connexions ;
  • met fin à toutes les tâches susceptibles de consommer des ressources.


mysqldump : Erreur 1412 : La définition de la table a changé

Le message d'erreur mysqldump: Error 1412: Table definition has changed, retry transaction when dumping the table s'affiche.

Cause possible

Au cours du processus d'exportation, une modification a été apportée à la table.

Solutions possibles

La transaction de vidage peut échouer si vous utilisez les instructions ci-dessous lors de l'opération d'exportation :

  • ALTER TABLE
  • CREATE TABLE
  • DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE
Supprimez l'une de ces instructions de l'opération de vidage.


Échec de l'importation

L'importation échoue lorsqu'un ou plusieurs utilisateurs référencés dans le fichier de vidage SQL exporté n'existent pas.

Cause possible

Avant d'importer un fichier de vidage SQL, tous les utilisateurs de la base de données qui possèdent des objets ou disposent d'autorisations sur les objets qu'elle contient doivent exister. Si ce n'est pas le cas, la restauration ne parvient pas à recréer les objets en rétablissant les propriétaires et/ou les autorisations d'origine.

Solutions possibles

Créez les utilisateurs de la base de données avant d'importer le fichier de vidage SQL.


Fermeture de la connexion lors de l'exportation

La connexion se ferme lors de l'exportation.

Cause possible

La connexion à Cloud Storage expire peut-être parce que la requête exécutée lors de l'exportation ne produit aucune donnée dans les sept minutes suivant le lancement de l'exportation.

Solutions possibles

Testez la requête manuellement en vous connectant depuis n'importe quel client et en envoyant le résultat de votre requête à STDOUT à l'aide de la commande ci-dessous :

COPY (INSERT_YOUR_QUERY_HERE) TO STDOUT WITH ( FORMAT csv, DELIMITER ',', ENCODING 'UTF8', QUOTE '"', ESCAPE '"' )

Ce comportement est normal, car le client est censé commencer à envoyer des données immédiatement après le lancement de l'exportation. Une connexion maintenue ouverte sans envoyer de données finit par s'interrompre, ce qui entraîne l'échec de l'exportation et laisse l'opération dans un état d'incertitude. En outre, le message d'erreur de gcloud suivant s'affiche :

operation is taking longer than expected


Erreur inconnue lors de l'exportation

Le message d'erreur Unknown error s'affiche lorsque vous tentez d'exporter une base de données vers un bucket Cloud Storage.

Cause possible

Le transfert peut échouer en raison d'un problème de bande passante.

Solutions possibles

L'instance Cloud SQL peut se trouver dans une région différente de celle du bucket Cloud Storage. La lecture et l'écriture de données d'un continent à l'autre impliquent une utilisation importante du réseau, pouvant entraîner ce type de problèmes intermittents. Vérifiez les régions de votre instance et de votre bucket.


Vous souhaitez automatiser les exportations

Vous souhaitez automatiser les exportations.

Cause possible

Cloud SQL ne permet pas d'automatiser les exportations.

Solutions possibles

Vous pouvez créer votre propre système d'exportation automatisé à l'aide de produits Google Cloud tels que Cloud Scheduler, Pub/Sub et Cloud Functions.


Erreur système de type ERROR_RDBMS

Le message d'erreur [ERROR_RDBMS] system error occurred s'affiche.

Cause possible

  • Il se peut que l'utilisateur ne dispose pas de toutes les autorisations Cloud Storage dont il a besoin.
  • La table de base de données n'existe peut-être pas

Solutions possibles

  1. Vérifiez que vous disposez tout au moins des autorisations WRITER sur le bucket et READER sur le fichier d'exportation. Pour en savoir plus sur la configuration du contrôle d'accès dans Cloud Storage, consultez la page Créer et gérer des listes de contrôle d'accès.
  2. Assurez-vous que la table existe. Si tel est le cas, vérifiez que vous disposez des autorisations appropriées sur le bucket.

Erreur lors de l'importation : la table n'existe pas.

Une importation échoue et une erreur indiquant qu'une table n'existe pas s'affiche.

Cause possible

Les tables peuvent comporter des dépendances de clés étrangères sur d'autres tables. En fonction de l'ordre des opérations, il est possible qu'une ou plusieurs de ces tables n'existent pas encore lors de l'importation.

Solutions possibles

Ajoutez la ligne suivante au début du fichier de vidage :

  SET FOREIGN_KEY_CHECKS=0;

Ajoutez également cette ligne à la fin du fichier de vidage :

  SET FOREIGN_KEY_CHECKS=1;

Ces paramètres désactivent les vérifications de l'intégrité des données pendant que l'opération d'importation est en cours, et les réactivent une fois les données chargées. Cela n'affecte pas l'intégrité des données de la base de données, car elles ont déjà été validées lors de la création du fichier de vidage.

Étapes suivantes