Passer au contenu

Comment résoudre un problème d'échec de vérification préalable à la mise à niveau dans Amazon RDS for MySQL ?

Lecture de 6 minute(s)
0

Je souhaite résoudre l'échec de vérification préalable à la mise à niveau qui s’affiche lorsque j'essaie de mettre à niveau mon instance de base de données Amazon Relational Database Service (Amazon RDS) for MySQL.

Brève description

Amazon RDS et Amazon Aurora édition compatible avec MySQL incluent des vérifications préalables automatiques qui minimisent toute durée d’indisponibilité imprévue lors d’une mise à niveau de version. Lorsque vous effectuez une mise à niveau de MySQL de la version [5.7 vers la version 8.0 ou de la version 8.0 vers la version 8.4](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.MySQL.Major.html#USER_UpgradeDBInstance.MySQL.80to84Prechecks), les vérifications préalables détectent toute incompatibilité de données susceptible d'affecter votre mise à niveau. En cas d'échec de vérification préalable á la mise à niveau sur votre instance de base de données, la mise à niveau de la version Amazon RDS for MySQL est interrompue. Amazon RDS fournit ensuite les détails de l'échec de vérification préalable dans le fichier journal PrePatchCompatibility.

Pour identifier et corriger le problème, consultez le fichier journal sous Journaux et événements dans la console Amazon RDS.

Pour plus d'informations sur les vérifications préalables de MySQL, consultez la page utilitaire Vérificateur de mise à niveau sur le site Web de MySQL.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Consultez le message d'échec de vérification préalable à la mise à niveau

Pour consulter votre fichier journal, procédez comme suit :

  1. Ouvrez la console Amazon RDS.
  2. Dans le volet de navigation, sélectionnez Bases de données, puis sélectionnez la base de données que vous essayez de mettre à niveau.
  3. Sélectionnez l'onglet Journaux et événements, puis recherchez PrePatchCompatibility dans les événements récents.
  4. Examinez le fichier journal PrePatchCompatibility, puis remédiez au problème.
    Remarque : Dans la plupart des cas, l'entrée du journal inclut un lien vers la documentation d’Amazon RDS for MySQL qui explique comment résoudre le problème d'incompatibilité.

Vérifier si le message contient des erreurs, des avertissements et des messages de niveau notification spécifiques

Dans le fichier journal PrePatchCompatibility, vous pouvez recevoir l'un des messages de vérification préalable suivants :

  • « Usage of old temporal type : ERROR »
  • « Usage of db objects with names conflicting with new reserved keywords : WARNING »
  • « Usage of utf8mb3 charset : NOTICE »
  • « Table names in the mysql schema conflicting with new tables in 8.0 : ERROR »
  • « Partitioned tables using engines with non native partitioning : ERROR »
  • « Foreign key constraint names longer than 64 characters : ERROR »
  • « Usage of obsolete MAXDB sql_mode flag : WARNING »
  • « Usage of obsolete sql_mode flags : NOTICE »
  • « ENUM/SET column definitions containing elements longer than 255 characters : ERROR »
  • « Usage of partitioned tables in shared tablespaces : ERROR »
  • « Circular directory references in tablespace data file paths : ERROR »
  • « Usage of removed functions : ERROR »
  • « Usage of removed GROUP BY ASC/DESC syntax : ERROR »
  • « Removed system variables for error logging to the system log configuration : ERROR »
  • « Removed system variables : ERROR »
  • « System variables with new default values : WARNING »
  • « Schema inconsistencies resulting from file removal or corruption : ERROR »
  • « Issues reported by 'check table x for upgrade' command : ERROR or WARNING or NOTICE »
  • « The definer column for mysql.events cannot be null or blank : ERROR »
  • « Tables with dangling FULLTEXT index reference : ERROR »
  • « Routines with deprecated keywords in definition : ERROR »
  • « DB instance must have enough free disk space : ERROR »
  • « Creating indexes larger than 767 bytes on tables with redundant row format might cause the tables to be inaccessible : WARNING »
  • « The tables with redundant row format can't have an index larger than 767 bytes : ERROR »
  • « Column definition mismatch between InnoDB Data Dictionary and actual table definition : ERROR »

Si vous recevez un message de type ERROR, corrigez-le avant d'essayer de procéder à la mise à niveau. Si vous recevez un message de type WARNING, cela signifie qu'Amazon RDS n'a détecté aucune erreur grave, mais a détecté des problèmes potentiels.

Si vous recevez un message de type NOTICE, cela signifie qu'Amazon RDS n'a détecté aucune erreur ou problème de compatibilité connu. Cependant, vérifiez le message NOTICE dans les journaux d'erreurs.

Répertorier les fichiers journaux et télécharger les données

Pour répertorier les fichiers journaux et télécharger les données, procédez comme suit :

  1. Exécutez la commande describe-db-log-files de l'interface de ligne de commande AWS pour répertorier les fichiers journaux :

    aws rds describe-db-log-files --db-instance-identifier DB_identifier --query '*[].[LogFileName]' --output text

    Remarque : Remplacez DB_identifier par le nom de la base de données dans laquelle se trouve le fichier journal.
    Exemple de sortie :

    [root@ip-x-x-x-x ec2-user]# aws rds describe-db-log-files --db-instance-identifier testinstance --query '*[].[LogFileName]' --output text  
    PrePatchCompatibility.log  
    error/mysql-error.log  
    error/mysql-error-running.log  
    error/mysql-error-running.log.2023-05-06.3  
    error/mysql-error-running.log.2023-05-09.4  
    error/mysql-error-running.log.2023-05-10.3  
    error/mysql-error-running.log.2023-05-12.19  
    mysqlUpgrade
  2. Exécutez la commande download-db-log-file-portion pour télécharger un fichier journal spécifique :

    aws rds download-db-log-file-portion --db-instance-identifier DB_identifier \--log-file-name PrePatchCompatibility.log --starting-token 0 \--output text > <LogFileName to save a copy>

    Remarque : Remplacez DB_identifier par le nom de la base de données dans laquelle se trouve le fichier journal.
    Exemple de sortie :

    aws rds download-db-log-file-portion --db-instance-identifier testinstance \  
    --log-file-name PrePatchCompatibility.log --starting-token 0 \  
    --output text > PrePatchCompatibilityCopy.log

Informations connexes

Vous effectuez une mise à niveau vers MySQL 8.0 ? Voici ce que vous devez savoir sur le site Web de MySQL

Préparation de votre installation pour la mise à niveau sur le site Web de MySQL