Diagnostiquer les problèmes

Cette page répertorie les problèmes les plus fréquents que vous pouvez rencontrer en travaillant avec des instances Cloud SQL, ainsi que la procédure à suivre pour y remédier. Consultez également les pages Problèmes connus, Dépannage et Assistance.

Voir les journaux

Pour afficher des informations sur les opérations récentes, vous pouvez consulter les journaux des opérations des instances Cloud SQL ou les journaux des erreurs MySQL.

L'instance ne répond pas

Si l'instance cesse de répondre aux connexions, ou si vous constatez une diminution des performances, assurez-vous qu'elle respecte les consignes opérationnelles. Si ce n'est pas le cas, elle n'est pas couverte par le Contrat de niveau de service Cloud SQL.

Problèmes de connexion

Pour obtenir de l'aide concernant les problèmes de connexion, consultez la page Déboguer les problèmes de connexion ou la section Connectivité de la page de dépannage.

Problèmes d'instance

Sauvegardes

Pour optimiser les performances des sauvegardes, conservez un nombre raisonnable de tables.

Pour les autres problèmes de sauvegarde, consultez la section Sauvegardes de la page de dépannage.

Importation et exportation

Les importations et les exportations dans Cloud SQL reviennent au même qu'employer l'utilitaire mysqldump, mais avec la fonctionnalité d'importation/exportation de Cloud SQL, vous transférez des données à l'aide d'un bucket Cloud Storage.

L'exécution d'opérations d'importation dans Cloud SQL et d'exportations à partir de Cloud SQL peut prendre beaucoup de temps selon la taille des données traitées. Cela peut avoir les conséquences suivantes :

  • Vous ne pouvez pas arrêter une opération d'instance Cloud SQL de longue durée.
  • Vous ne pouvez effectuer qu'une seule opération d'importation ou d'exportation à la fois pour chaque instance, tandis qu'une importation ou une exportation de longue durée bloque d'autres opérations, telles que les sauvegardes automatiques quotidiennes. Les exportations sans serveur vous permettent d'exécuter d'autres opérations, comme la modification d'instances, l'importation, le basculement et le déblocage des sauvegardes quotidiennes.

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 effectuer l'exportation à partir d'une instance dupliquée avec accès en lecture ou utiliser l'exportation sans serveur afin de minimiser l'impact sur les performances de la base de données et de permettre que d'autres opérations s'exécutent sur votre instance pendant l'exécution d'une exportation.

Autres points à garder à l'esprit lors de l'importation :

  • Si l'importation plante, cela peut être dû à une erreur de mémoire insuffisante. Dans ce cas, vous pouvez essayer d'utiliser directement des commandes MySQL pour ajouter les paramètres --extended-insert=FALSE --complete-insert. Ces paramètres réduisent la vitesse de l'importation, mais également la quantité de mémoire requise par l'importation.

Pour les autres problèmes d'importation et d'exportation, consultez la section Importation et exportation de la page de dépannage.

Espace disque

Si l'instance atteint l'espace de stockage maximal autorisé, les écritures vers la base de données échouent. Si vous supprimez des données, par exemple en supprimant une table, l'espace de stockage utilisé indiqué pour l'instance ne reflète pas l'espace libéré. Consultez la section Comment récupérer l'espace d'une table supprimée ? dans les questions fréquentes pour obtenir une explication de ce comportement.

Si vous atteignez la limite de stockage maximale, l'instance risque d'être bloquée au redémarrage.

Éviter la corruption des données

Éviter les colonnes générées

En raison d'un problème dans MySQL, l'utilisation de colonnes générées peut entraîner une corruption des données. Pour en savoir plus, reportez-vous au bug MySQL n° 82736.

Arrêts corrects

Lorsque Cloud SQL arrête une instance (par exemple, à des fins de maintenance), aucune nouvelle connexion n'est envoyée à cette dernière, et les connexions existantes sont terminées. Le temps d'arrêt de mysqld est plafonné à une minute. S'il ne se termine pas dans ce délai, l'arrêt du processus mysqld est forcé. Cela peut entraîner l'abandon des écritures sur le disque au beau milieu du processus.

Moteurs de base de données

InnoDB est le seul moteur de stockage accepté pour les instances MySQL, car il résiste mieux à la corruption des tables que d'autres moteurs de stockage MySQL, tels que MyISAM.

Par défaut, les tables de base de données Cloud SQL sont créées à l'aide du moteur de stockage InnoDB. Si votre syntaxe CREATE TABLE inclut une option ENGINE spécifiant un moteur de stockage autre qu'InnoDB, par exemple ENGINE = MyISAM, la table n'est pas créée et des messages d'erreur semblables à l'exemple suivant s'affichent :

ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).

Vous pouvez éviter cette erreur en supprimant l'option ENGINE = MyISAM de la commande CREATE TABLE. Cela entraîne la création de la table avec le moteur de stockage InnoDB.

Modifications apportées aux tables système

Les tables système MySQL utilisent le moteur de stockage MyISAM, y compris toutes les tables de la base de données mysql, comme mysql.user et mysql.db. Ces tables sont sensibles aux arrêts incorrects. Vous devez exécuter la commande FLUSH CHANGES après avoir modifié ces tables. En cas de corruption de MyISAM, les commandes CHECK TABLE et REPAIR TABLE peuvent vous permettre de rétablir l'état de fonctionnement, mais pas d'enregistrer des données.

Identifiants globaux de transaction (GTID)

Les GTID sont automatiquement activés dans toutes les instances MySQL. Cela offre une protection contre la perte de données lors de la création d'instances dupliquées et du basculement, et rend la réplication plus robuste. Cependant, MySQL impose certaines limites concernant les GTID, comme indiqué dans le manuel MySQL. Les opérations suivantes, risquées d'un point de vue transactionnel, ne peuvent pas être utilisées avec un serveur MySQL compatible GTID :

  • Instructions CREATE TABLE ... SELECT
  • Instructions CREATE TEMPORARY TABLE à l'intérieur des transactions
  • Transactions ou instructions ayant une incidence à la fois sur les tables transactionnelles et non transactionnelles

Si vous utilisez une transaction risquée d'un point de vue transactionnel, un message d'erreur semblable à l'exemple suivant s'affiche :

 Exception: SQLSTATE[HY000]: General error: 1786
 CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.

Utiliser des déclencheurs et des fonctions stockées

Si la journalisation binaire est activée sur votre instance et que vous devez utiliser des déclencheurs ou des fonctions stockées, assurez-vous que l'option log_bin_trust_function_creators est définie sur on.

État suspendu

Cloud SQL peut suspendre une instance pour plusieurs raisons, parmi lesquelles :

  • Problèmes de facturation

    Par exemple, l'instance est susceptible d'être suspendue si la carte de crédit liée au compte de facturation du projet a expiré. Pour vérifier les informations de facturation d'un projet, accédez à la page de facturation de Google Cloud Console, puis sélectionnez le projet pour afficher les informations du compte de facturation correspondantes. Une fois le problème de facturation résolu, l'instance retourne à l'état opérationnel dans les heures qui suivent.

  • Principaux problèmes liés à KMS

    Par exemple, si la version de clé KMS utilisée pour chiffrer les données utilisateur dans l'instance Cloud SQL est absente, ou si elle a été désactivée ou détruite. Reportez-vous à la page Utiliser des clés de chiffrement gérées par le client (CMEK).

  • Problèmes d'ordre juridique

    Par exemple, une violation des Règles d'utilisation autorisée de Google Cloud peut entraîner la suspension de l'instance. Pour en savoir plus, consultez la section "Suspensions et suppressions" dans les Conditions d'utilisation de Google Cloud.

  • Problèmes opérationnels

    Par exemple, si une instance est bloquée dans une boucle de plantage (disons qu'elle se bloque au démarrage ou juste après le démarrage), Cloud SQL est susceptible de la suspendre.

Lorsqu'une instance est suspendue, vous pouvez continuer à afficher les informations la concernant ou la supprimer si la suspension a été déclenchée par des problèmes de facturation.

Les utilisateurs de Cloud SQL disposant des formules d'assistance Platinum, Gold ou Silver peuvent contacter directement notre équipe d'assistance au sujet des instances suspendues. Tous les utilisateurs peuvent utiliser les conseils précédents et accéder au forum google-cloud-sql.

Performances

Présentation

Cloud SQL traite les charges de travail exigeantes en performances et peut gérer jusqu'à 60 000 IOPS sans frais supplémentaires. Les performances d'IOPS et de débit dépendent de facteurs tels que la taille des disques, le nombre de processeurs virtuels de l'instance et la taille des blocs d'E/S.

Les performances de votre instance dépendent également du type de stockage que vous avez choisi et de votre charge de travail.

En savoir plus :

Activer les journaux de requêtes

Pour ajuster les performances de vos requêtes, vous pouvez configurer Cloud SQL pour enregistrer les requêtes lentes en ajoutant les options de base de données --log_output='FILE' et --slow_query_log=on à votre instance. De cette façon, la sortie du journal sera disponible dans la visionneuse de journaux de Google Cloud Console. Notez que les frais de journalisation de Google Cloud Observability s'appliquent.

Ne définissez pas log_output sur TABLE. Cela peut entraîner des problèmes de connexion, comme décrit dans la section Conseils pour l'utilisation d'options.

Vous pouvez consulter ce tutoriel pour savoir comment enregistrer et surveiller les requêtes lentes Cloud SQL pour MySQL à l'aide de Cloud Logging et Cloud Monitoring.

Activer la surveillance des verrous

Les moniteurs InnoDB fournissent des informations sur l'état interne du moteur de stockage InnoDB que vous pouvez utiliser pour ajuster les performances.

Accédez à l'instance à l'aide du client MySQL, puis obtenez une sortie du moniteur à la demande :

SHOW ENGINE INNODB STATUS\G

Pour obtenir des explications sur les différentes sections de la sortie du moniteur, consultez la page InnoDB Standard Monitor and Lock Monitor Output (Sortie de surveillance standard et surveillance des verrous InnoDB).

Vous pouvez activer les moniteurs InnoDB afin que la sortie soit générée régulièrement dans un fichier ou une table, mais cela entraînera une détérioration des performances. Pour en savoir plus, consultez la page Activer les moniteurs InnoDB.

Utiliser un schéma de performances

La fonctionnalité MySQL Performance Schema permet de surveiller l'exécution du serveur MySQL à un niveau inférieur. La manière la plus simple d'utiliser les statistiques générées dans performance_schema est d'utiliser la fonctionnalité MySQL Workbench Performance Reports.

Maintenir un nombre raisonnable de tables de base de données

Les tables de base de données consomment des ressources système. Si elles sont très nombreuses, cela peut affecter les performances et la disponibilité de l'instance, et entraîner la perte de sa couverture par le contrat de niveau de service. En savoir plus

Conseils relatifs aux performances générales

. Pour les insertions, mises à jour ou suppressions lentes de bases de données, envisagez les actions suivantes :
  • Vérifiez les emplacements du processus d'écriture et de la base de données. L'envoi de données sur une longue distance entraîne une latence.

En cas de sélections lentes dans une base de données, prenez en compte les éléments suivants :

  • La mise en cache est importante pour les performances de lecture. Comparez la taille de l'ensemble de données à celle de la mémoire RAM de l'instance. Dans l'idéal, l'intégralité de l'ensemble de données tient dans 70 % de la mémoire RAM de l'instance. Le cas échéant, les requêtes ne sont pas limitées par les performances d'E/S. Si ce n'est pas le cas, envisagez d'augmenter la taille de la mémoire RAM de votre instance.
  • Si la charge de travail consiste en des requêtes nécessitant une utilisation intensive des processeurs (opérations de tri, expressions régulières et autres fonctions complexes), il est possible que votre instance soit limitée : pensez à augmenter le nombre de processeurs.
  • Vérifiez l'emplacement du lecteur et de la base de données. La latence affecte davantage les performances de lecture que les performances d'écriture.
  • Recherchez des améliorations de performances spécifiques à SQL en dehors du Cloud, telles que l'ajout d'une indexation appropriée, la réduction du nombre de données à analyser et la réduction du nombre d'allers-retours supplémentaires.
  • Si vous constatez de mauvaises performances lors de l'exécution de requêtes, utilisez EXPLAIN. EXPLAIN est une instruction que vous ajoutez à d'autres instructions, comme SELECT. Elle renvoie des informations sur la manière dont MySQL exécute l'instruction. Elle est compatible avec les instructions SELECT, DELETE, INSERT, REPLACE et UPDATE. Par exemple, EXPLAIN SELECT * FROM myTable;.

    Utilisez EXPLAIN pour identifier les endroits où vous pouvez effectuer les opérations suivantes :

    • Ajouter des index aux tables pour améliorer les performances des requêtes. Par exemple, assurez-vous que chaque champ utilisé en tant que clé JOIN (clé de jointure) possède un index sur les deux tables.

    • Améliorer les opérations ORDER BY. Si EXPLAIN affiche "Using temporary; Using filesort" (Utilisation de tables temporaires ; Tri du fichier) dans la colonne Extra de la sortie, les résultats intermédiaires sont stockés dans un fichier qui est ensuite trié, ce qui entraîne généralement de mauvaises performances. Dans ce cas, effectuez l'une des opérations suivantes :

      • Si possible, utilisez des index plutôt que le tri. Pour en savoir plus, consultez la page Optimisation ORDER BY.

      • Augmentez la taille de la variable sort_buffer_size pour la session de requête.

      • Utilisez moins de mémoire RAM par ligne en déclarant des colonnes d'une taille limitée au strict nécessaire.

    Résoudre les problèmes

    Si vous rencontrez d'autres problèmes Cloud SQL, consultez la page de Dépannage.

    Messages d'erreur

    Pour en savoir plus sur les messages d'erreur liés à l'API, consultez la page de référence Messages d'erreur.

    Résoudre les problèmes liés aux clés de chiffrement gérées par le client (CMEK)

    Les opérations d'administrateur Cloud SQL, telles que la création, le clonage ou la mise à jour peuvent échouer en raison d'erreurs Cloud KMS et de l'absence de rôles ou d'autorisations. Les causes habituelles d'échec sont les suivantes : la version de clé Cloud KMS est manquante, la version de clé Cloud KMS est désactivée ou détruite, les autorisations IAM sont insuffisantes pour accéder à la version de clé Cloud KMS ou la version de clé Cloud KMS se trouve dans une région différente de celle de l'instance Cloud SQL. Utilisez le tableau de dépannage ci-dessous pour diagnostiquer et résoudre les problèmes courants.

    Tableau de dépannage des clés de chiffrement gérées par le client

    Pour cette erreur... Le problème peut être... Essayez ce qui suit...
    Le compte de service par produit et par projet est introuvable Le nom du compte de service est incorrect. Assurez-vous d'avoir créé un compte de service pour le bon projet utilisateur.

    ACCÉDER A LA PAGE "COMPTES DE SERVICE"

    Impossible d'accorder l'accès au compte de service Le compte utilisateur n'a pas l'autorisation d'accorder l'accès à cette version de clé. Ajoutez le rôle Administrateur de l'organisation à votre compte utilisateur ou de service.

    ACCÉDER À LA PAGE COMPTES IAM

    La version de clé Cloud KMS est détruite La version de clé est détruite. Si la version de clé est détruite, vous ne pouvez pas l'utiliser pour chiffrer ou déchiffrer des données.
    La version de clé Cloud KMS est désactivée La version de clé est désactivée. Réactivez la version de clé Cloud KMS.

    ACCÉDER À LA PAGE "CLÉS DE CHIFFREMENT"

    Autorisation insuffisante pour utiliser la clé Cloud KMS Le rôle cloudkms.cryptoKeyEncrypterDecrypter est manquant sur le compte utilisateur ou de service que vous utilisez pour exécuter des opérations sur des instances Cloud SQL, ou la version de clé Cloud KMS n'existe pas. Ajoutez le rôle cloudkms.cryptoKeyEncrypterDecrypter à votre compte utilisateur ou de service.

    ACCÉDER À LA PAGE COMPTES IAM


    Si votre compte dispose déjà du rôle, consultez la section Créer une clé pour savoir comment créer une version de clé. Voir la remarque ci-dessous.
    La clé Cloud KMS est introuvable La version de clé n'existe pas. Créez une nouvelle version de la clé. Consultez la section Créer une clé. Voir la remarque ci-dessous.
    L'instance Cloud SQL et la version de clé Cloud KMS se trouvent dans des régions différentes La version de clé Cloud KMS et l'instance Cloud SQL doivent se trouver dans la même région. Cela ne fonctionnera pas si la version de clé Cloud KMS se trouve dans une région mondiale ou dans un emplacement multirégional. Créez une version de clé dans la même région que celle où vous souhaitez créer des instances. Consultez la section Créer une clé. Voir la remarque ci-dessous.

    Tableau de dépannage du rechiffrement

    Pour cette erreur... Le problème peut être... Essayez ce qui suit...
    Le rechiffrement des ressources CMEK a échoué, car la clé Cloud KMS est inaccessible. Veuillez vous assurer que la version de clé primaire est activée et que l'autorisation est accordée correctement. La version de clé n'est pas activée ou ne dispose pas des autorisations appropriées.

    Réactivez la version de clé Cloud KMS :

    ACCÉDER À LA PAGE "CLÉS DE CHIFFREMENT"

    Vérifiez qu'elle dispose des autorisations appropriées :

    ACCÉDER À LA PAGE COMPTES IAM

    Échec du rechiffrement des ressources CMEK en raison d'une erreur interne du serveur. Veuillez réessayer plus tard. Une erreur interne du serveur s'est produite. Relancez le rechiffrement. Pour en savoir plus, consultez Rechiffrer une instance ou une instance répliquée existante sur laquelle l'option CMEK est activée.