Identification de la cause des échecs de mise à niveau de version majeure Aurora MySQL - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Identification de la cause des échecs de mise à niveau de version majeure Aurora MySQL

Dans le didacticiel, la mise à niveau d’Aurora MySQL version 2 vers la version 3 a réussi. Toutefois, si la mise à niveau avait échoué, vous voudriez savoir pourquoi.

Pour ce faire, commencez par utiliser la commande describe-events de l’AWS CLI pour examiner les événements du cluster de bases de données. Cet exemple montre les événements liés à mydbcluster pendant les 10 dernières heures.

aws rds describe-events \ --source-type db-cluster \ --source-identifier mydbcluster \ --duration 600

Dans ce cas, la vérification préalable de la mise à niveau a échoué.

{ "Events": [ { "SourceIdentifier": "mydbcluster", "SourceType": "db-cluster", "Message": "Database cluster engine version upgrade started.", "EventCategories": [ "maintenance" ], "Date": "2024-04-11T13:23:22.846000+00:00", "SourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" }, { "SourceIdentifier": "mydbcluster", "SourceType": "db-cluster", "Message": "Database cluster is in a state that cannot be upgraded: Upgrade prechecks failed. For more details, see the upgrade-prechecks.log file. For more information on troubleshooting the cause of the upgrade failure, see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Upgrading.Troubleshooting.html", "EventCategories": [ "maintenance" ], "Date": "2024-04-11T13:23:24.373000+00:00", "SourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" } ] }

Pour diagnostiquer la cause exacte du problème, examinez les journaux de base de données de l’instance de base de données d’enregistreur. Lorsqu’une mise à niveau vers Aurora MySQL 3 échoue, l’instance contient un fichier journal portant le nom upgrade-prechecks.log. Cet exemple montre comment détecter la présence de ce journal, puis comment le télécharger dans un fichier local pour examen.

aws rds describe-db-log-files --db-instance-identifier mydbcluster-instance \ --query '*[].[LogFileName]' --output text error/mysql-error-running.log error/mysql-error-running.log.2024-04-11.20 error/mysql-error-running.log.2024-04-11.21 error/mysql-error.log external/mysql-external.log upgrade-prechecks.log aws rds download-db-log-file-portion --db-instance-identifier mydbcluster-instance \ --log-file-name upgrade-prechecks.log \ --starting-token 0 \ --output text >upgrade_prechecks.log

Le fichier upgrade-prechecks.log est au format JSON. Nous le téléchargeons à l’aide de l’option --output text afin d’éviter de coder la sortie JSON dans un autre encapsuleur JSON. Pour les mises à niveau d’Aurora MySQL version 3, ce journal inclut toujours certains messages d’information et d’avertissement. Il inclut uniquement des messages d’erreur si la mise à niveau échoue. Si la mise à niveau réussit, le fichier journal n’est pas créé du tout.

Pour résumer toutes les erreurs et afficher les champs d’objet et de description associés, vous pouvez exécuter la commande grep -A 2 '"level": "Error"' sur le contenu du fichier upgrade-prechecks.log. Cela permet d’afficher chaque ligne d’erreur et les deux lignes qui la suivent. Elles contiennent le nom de l’objet de base de données correspondant et des conseils sur la façon de corriger le problème.

$ cat upgrade-prechecks.log | grep -A 2 '"level": "Error"' "level": "Error", "dbObject": "problematic_upgrade.dangling_fulltext_index", "description": "Table `problematic_upgrade.dangling_fulltext_index` contains dangling FULLTEXT index. Kindly recreate the table before upgrade."

Dans cet exemple, vous pouvez exécuter la commande SQL suivante sur la table en cause pour tenter de résoudre le problème, ou vous pouvez recréer la table sans l’index suspendu.

OPTIMIZE TABLE problematic_upgrade.dangling_fulltext_index;

Réessayez ensuite la mise à niveau.