Actualizaciones de versiones principales de RDS para MySQL - Amazon Relational Database Service

Actualizaciones de versiones principales de RDS para MySQL

Amazon RDS es compatible con las siguientes actualizaciones locales para versiones principales del motor de base de datos MySQL:

  • MySQL 5.6 a MySQL 5.7

  • MySQL 5.7 a MySQL 8.0

nota

Solo puede crear instancias de base de datos MySQL versión 5.7 y 8.0 con clases de instancia de base de datos de última generación y generación actual, además de la clase anterior db.m3.

En algunos casos, desea actualizar una instancia de base de datos MySQL versión 5.6 en una clase anterior (que no sea db.m3) a la versión 5.7 de MySQL. En estos casos, modifique primero la instancia de base de datos para usar una clase de instancia de datos de última generación o generación actual. Una vez hecho esto, puede modificar la instancia de base de datos para usar el motor de base de datos MySQL versión 5.7. Para obtener información acerca de las clases de instancia de base de datos de Amazon RDS, consulte Clases de instancia de base de datos de .

Información general sobre las actualizaciones de la versión principal de MySQL

Las actualizaciones de la versión principal pueden contener cambios realizados en la base de datos que no son compatibles con las versiones anteriores de las aplicaciones. Como resultado, Amazon RDS no aplica automáticamente las actualizaciones de las versiones principales; es necesario modificar manualmente la instancia de base de datos. Recomendamos que pruebe exhaustivamente cualquier actualización antes de aplicarla a las instancias de producción.

Para realizar una actualización de versión principal para una instancia de base de datos MySQL versión 5.6 en Amazon RDS a la versión 5.7 de MySQL o posterior, aplique antes todas las actualizaciones del sistema operativo disponibles. Una vez que se completen las actualizaciones del sistema operativo, actualice a cada versión principal: de 5.6 a 5.7 y luego de 5.7 a 8.0. Las instancias de base de datos MySQL creadas antes del 24 de abril de 2014, muestran una actualización del sistema operativo disponible hasta que se haya aplicado la actualización. Para obtener más información acerca de las actualizaciones del sistema operativo, consulte Aplicación de actualizaciones a una instancia de base de datos o clúster de base de datos.

Durante una actualización de versión principal de MySQL, Amazon RDS ejecuta el comando mysql_upgrade binario de MySQL para actualizar tablas, si es necesario. Además, Amazon RDS vacía las tablas slow_log y general_log durante una actualización de versión principal. Para conservar información de registro, guarde el contenido de este antes de realizar la actualización de versión principal.

Las actualizaciones de versión principal de MySQL suelen realizarse en aproximadamente 10 minutos. Algunas actualizaciones podrían tardar algo más debido al tamaño de la clase de instancia de base de datos, o bien porque la instancia no sigue determinadas directrices de funcionamiento de Prácticas recomendadas para Amazon RDS. Si actualiza una instancia de base de datos desde la consola de Amazon RDS, el estado de la instancia indica cuándo finaliza la actualización. Si realiza la actualización utilizando la AWS Command Line Interface (AWS CLI), use el comando describe-db-instances y compruebe el valor de Status.

Las actualizaciones a la versión 5.7 de MySQL podrían ser lentas

La versión 5.6.4 de MySQL introdujo un formato de fecha y hora nuevo para las columnas datetime, time y timestamp que permite fracciones en los valores de fecha y hora. Al actualizar una instancia de base de datos a MySQL versión 5.7, MySQL fuerza la conversión de todos los tipos de columna de fecha y hora al formato nuevo.

Debido a que esta conversión reconstruye sus tablas, la actualización de la instancia de base de datos podría tardar un tiempo considerable. La conversión forzada se aplica a todas las instancias de base de datos que ejecutan una versión anterior a MySQL 5.6.4. También se aplica a todas las instancias de base de datos que se actualizaron de una versión anterior a MySQL 5.6.4 a una versión distinta de 5.7.

Si su instancia de base de datos ejecuta una versión anterior a MySQL 5.6.4 o se actualizó de una versión anterior a 5.6.4, recomendamos un paso adicional. En estos casos, recomendamos que convierta las columnas datetime, time y timestamp en su base de datos antes de actualizar su instancia de base de datos a la versión 5.7 de MySQL. Esta conversión puede reducir significativamente la cantidad de tiempo necesario para actualizar la instancia de base de datos a la versión 5.7 de MySQL. Para actualizar sus columnas de fecha y hora al nuevo formato, emita el comando ALTER TABLE <table_name> FORCE; para cada tabla que contenga las columnas de fecha u hora. Debido a que la alteración de una tabla la bloquea y la mantiene en modo de solo lectura, recomendamos que realice esta actualización durante un periodo de mantenimiento.

Para encontrar todas las tablas en su base de datos que tengan columnas datetime, time o timestamp y crear un comando ALTER TABLE <table_name> FORCE; para cada tabla, use la siguiente consulta:

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

Comprobaciones previas de actualizaciones de la versión 5.7 a la 8.0 de MySQL

MySQL 8.0 presenta numerosas incompatibilidades con MySQL 5.7. Dichas incompatibilidades pueden causar problemas durante una actualización de MySQL 5.7 a MySQL 8.0. Así pues, puede requerirse cierta preparación con respecto a su base de datos para que la actualización se realice correctamente. A continuación, mostramos una lista general de dichas incompatibilidades:

  • Ninguna tabla debe usar tipos o funciones de datos obsoletos.

  • No tiene que haber archivos *.frm huérfanos.

  • No debe haber un definidor vacío ni faltar un definidor en los disparadores, y el contexto de creación de los disparadores tiene que ser válido.

  • Ninguna tabla particionada debe usar un motor de almacenamiento que no tenga soporte de particiones nativo.

  • No debe haber ninguna infracción de la palabra clave ni de la palabra reservada. Es posible que en MySQL 8.0 haya algunas palabras clave reservadas que no estaban reservadas previamente.

    Para obtener más información, consulte la página sobre Palabras clave y palabras reservadas en la documentación de MySQL.

  • No tiene que haber tablas en la base de datos del sistema mysql de MySQL 5.7 que tengan el mismo nombre que una tabla usada por el diccionario de datos de MySQL 8.0.

  • No tiene que haber modos SQL obsoletos en su configuración de variable del sistema sql_mode.

  • No tiene que haber tablas ni procedimientos almacenados que tengan elementos de columna ENUM o SET individuales que superen los 255 caracteres o 1020 bytes de longitud.

  • Antes de realizar la actualización a MySQL 8.0.13 o una versión superior, ninguna partición de tabla debe residir en espacios de tablas InnoDB compartidos.

  • No tiene que haber consultas ni definiciones de programas almacenadas de MySQL 8.0.12 o versiones anteriores que usen calificadores ASC o DESC para cláusulas GROUP BY.

  • Su instalación de MySQL 5.7 no tiene que usar características que no sean compatibles con MySQL 8.0.

    Para obtener más información, consulte la sección sobre características eliminadas en MySQL 8.0, en la documentación de MySQL.

  • No tiene que haber nombres de restricción de clave externa que superen los 64 caracteres.

  • Para mejorar la compatibilidad de Unicode, piense en convertir objetos que usen el conjunto de caracteres utf8mb3 para usar el conjunto de caracteres utf8mb4. El conjunto de caracteres utf8mb3 ha quedado obsoleto. Asimismo, piense en utilizar utf8mb4 para referencias de conjuntos de caracteres, en vez de utilizar utf8, ya que actualmente utf8 es un alias del conjunto de caracteres utf8mb3.

    Para obtener más información, consulte la sección sobre el conjunto de caracteres utf8mb3 (codificación Unicode UTF-8 de 3 bytes) en la documentación de MySQL.

Si inicia una actualización de MySQL 5.7 a 8.0, Amazon RDS ejecutará comprobaciones previas de forma automática para detectar estas incompatibilidades. Para obtener información acerca de cómo actualizar a MySQL 8.0, consulte la sección sobre la actualización de MySQL en la documentación de MySQL.

Estas comprobaciones previas son obligatorias. No tiene la opción de omitirlas. Las comprobaciones previas proporcionan las siguientes ventajas:

  • Le permiten evitar tiempos de inactividad no planeados durante la actualización.

  • Si hay incompatibilidades, Amazon RDS impide la actualización y proporciona un registro para que se informe sobre ellas. Luego podrá usar el registro para preparar su base de datos para la actualización a MySQL 8.0 y reducir así las incompatibilidades. Para obtener información detallada acerca de cómo eliminar incompatibilidades, consulte Preparing your installation for upgrade en la documentación de MySQL y Upgrading to MySQL 8.0? Here is what you need to know... en el blog de MySQL Server.

Entre las comprobaciones previas se incluyen algunas que a su vez se incluyen con MySQL y otras que el equipo Amazon RDS creó específicamente. Para obtener información acerca de las comprobaciones previas que proporciona MySQL, consulte la sección sobre la utilidad del comprobador de actualización.

Las comprobaciones previas se ejecutan antes de detenerse la instancia de base de datos para la actualización, lo que quiere decir que no causan tiempos de inactividad al ejecutarse. Si las verificaciones previas encuentran una incompatibilidad, Amazon RDS cancela automáticamente la actualización antes de detenerse la instancia de base de datos. Amazon RDS también genera un evento por la incompatibilidad. Para obtener más información acerca de los eventos de Amazon RDS, consulte Uso de notificaciones de eventos de Amazon RDS.

Amazon RDS registra información detallada acerca de cada incompatibilidad en el archivo de registro PrePatchCompatibility.log. En la mayoría de los casos, la entrada de registro incluye un vínculo a la documentación de SQL para corregir la incompatibilidad. Para obtener más información acerca de cómo visualizar los archivos de registro, consulte Visualización y descripción de archivos de registro de base de datos.

Debido a la naturaleza de las comprobaciones previa, analizan objetos en su base de datos. Este análisis genera un consumo de recursos y aumenta el tiempo de ejecución de la actualización.

nota

Amazon RDS ejecuta estas comprobaciones previas solo para una actualización de MySQL 5.7 a MySQL 8.0. Para una actualización de MySQL 5.6 a MySQL 5.7, las comprobaciones previas se limitan a confirmar que no hay tablas huérfanas y que hay suficiente espacio de almacenamiento para reconstruir tablas. Las comprobaciones no se ejecutan para las actualizaciones a versiones de MySQL inferiores a la 5.7.

Revertir después de no actualizar de MySQL 5.7 a 8.0

Cuando se actualiza una instancia de base de datos de MySQL versión 5.7 a MySQL versión 8.0, la actualización puede fallar. En particular, puede fallar si el diccionario de datos contiene incompatibilidades que no fueron capturadas por las comprobaciones previas. En este caso, la base de datos no se puede iniciar correctamente en la nueva versión de MySQL 8.0. En ese momento, Amazon RDS revierte los cambios realizados para la actualización. Luego de la reversión, la instancia de base de datos de MySQL ejecuta MySQL versión 5.7. Cuando se produce un error en una actualización y se revierte, Amazon RDS genera un evento con el ID de evento RDS-EVENT-0188.

Normalmente, una actualización falla porque existen incompatibilidades en los metadatos entre las bases de datos de la instancia de base de datos y la versión de MySQL de destino. Cuando falla una actualización, se pueden ver los detalles de dichas incompatibilidades en el archivo upgradeFailure.log. Resuelva las incompatibilidades antes de intentar actualizar nuevamente.

Durante un intento de actualización y de reversión fallidos, la instancia de base de datos se reinicia. Cualquier cambio de parámetros pendientes se aplica durante el reinicio y persiste después de la reversión.

Para obtener más información acerca de la actualización a MySQL 8.0, consulte los siguientes temas en la documentación de MySQL:

nota

Actualmente, la reversión automática después de una falla de actualización solo es compatible con las actualizaciones de versiones principales de MySQL 5.7 a 8.0.