Saltar al contenido

¿Cómo puedo solucionar un error de comprobación previa a la actualización en mi instancia de base de datos de Amazon RDS para MySQL?

5 minutos de lectura
0

Quiero resolver el error de comprobación previa a la actualización que recibo cuando intento actualizar mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para MySQL.

Descripción corta

Amazon RDS y la edición de Amazon Aurora compatible con MySQL cuentan con comprobaciones previas automáticas que minimizan cualquier tiempo de inactividad no planificado durante la actualización de una versión. Al actualizar MySQL de la versión 5.7 a la 8.0 o de la 8.0 a la 8.4, las comprobaciones previas detectan cualquier incompatibilidad de datos que pueda afectar a la actualización. Cuando se produce un error en la comprobación previa a la actualización de la instancia de base de datos, la actualización de la versión de Amazon RDS para MySQL se detiene. A continuación, Amazon RDS proporciona los detalles de la comprobación previa fallida en el archivo de registro PrePatchCompatibility.

Para identificar y corregir el problema, consulta el archivo de registro en Registros y eventos en la consola de Amazon RDS. 

Para obtener información sobre las comprobaciones previas de MySQL, consulta Upgrade Checker utility (Utilidad Comprobador de actualizaciones) en el sitio web de MySQL.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Revisión del mensaje de error de comprobación previa a la actualización

Para ver el archivo de registro, sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. En el panel de navegación, elige Bases de datos y, a continuación, selecciona la base de datos que intentas actualizar.
  3. Selecciona la pestaña Registros y eventos y, a continuación, busca PrePatchCompatibility en la sección Eventos recientes.
  4. Revisa el archivo de registro PrePatchCompatibility y, a continuación, resuelve el problema.
    Nota: En la mayoría de los casos, la entrada de registro incluye un enlace a la documentación de Amazon RDS para MySQL sobre cómo corregir el problema de incompatibilidad.

Revisión del mensaje para ver si hay errores, advertencias y mensajes específicos a nivel de aviso

En el archivo de registro PrePatchCompatibility, es posible que recibas uno de los siguientes mensajes de comprobación previa:

  • «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 recibes un mensaje de ERROR, corrige los errores antes de intentar la actualización. Si recibes un mensaje de ADVERTENCIA, significa que Amazon RDS no ha encontrado ningún error grave, pero sí algunos posibles problemas.

Si recibes un mensaje de AVISO, significa que Amazon RDS no ha encontrado ningún error ni problema de compatibilidad conocido. Sin embargo, consulta el AVISO en los registros de errores.

Enumeración de los archivos de registro y descarga de los datos

Para enumerar los archivos de registro y descargar los datos, sigue estos pasos:

  1. Ejecuta el comando describe-db-log-files de la AWS CLI para enumerar los archivos de registro:

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

    Nota: Sustituye DB_identifier por el nombre de la base de datos en la que se encuentra el archivo de registro.
    Resultado de ejemplo:

    [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. Ejecuta el comando download-db-log-file-portion para descargar un archivo de registro específico:

    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>

    Nota: Sustituye DB_identifier por el nombre de la base de datos en la que se encuentra el archivo de registro.
    Resultado de ejemplo:

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

Información relacionada

Upgrading to MySQL 8.0? Here's what you need to know (¿Vas a actualizar a MySQL 8.0? Esto es lo que necesitas saber) en el sitio web de MySQL

Preparing your installation for upgrade (Preparación de la instalación para la actualización) en el sitio web de MySQL