View a markdown version of this page

Descripciones de comprobaciones previas para la actualización de la versión 3 a la versión 8.4 de Aurora MySQL - Amazon Aurora

Descripciones de comprobaciones previas para la actualización de la versión 3 a la versión 8.4 de Aurora MySQL

Se ejecutan las siguientes comprobaciones previas al actualizar de la versión 3 de Aurora MySQL (compatible con MySQL 8.0) a la versión 8.4 de Aurora MySQL (compatible con MySQL 8.4). Estas comprobaciones previas identifican posibles problemas de compatibilidad antes de que comience la actualización.

Errores

Las siguientes comprobaciones previas generan errores cuando fallan y no se puede continuar con la actualización.

Comprobaciones previas de MySQL que informan de errores

Las siguientes comprobaciones previas proceden de Community MySQL:

deprecatedRouterAuthMethod

Nivel de comprobación previa: error

Comprobación de si las cuentas internas de MySQL Router utilizan métodos de autenticación obsoletos o no válidos

Esta comprobación previa valida que las cuentas internas de MySQL Router no utilicen métodos de autenticación obsoletos o no válidos que puedan eliminarse o modificarse en MySQL 8.4. Las cuentas de MySQL Router se crean automáticamente en el momento del arranque cuando el router no recibe ninguna instrucción de usar una cuenta existente.

Ejemplo de código de salida:

{ "id": "deprecatedRouterAuthMethod", "title": "Check for deprecated or invalid authentication methods in use by MySQL Router internal accounts.", "status": "OK", "description": "Warning: The following accounts are MySQL Router accounts that use a deprecated authentication method.\nThose accounts are automatically created at bootstrap time when the Router is not instructed to use an existing account. Please upgrade MySQL Router to the latest version to ensure deprecated authentication methods are no longer used.\nSince version 8.0.19 it's also possible to instruct MySQL Router to use a dedicated account. That account can be created using the AdminAPI.", "documentationLink": "https://dev.mysql.com/doc/mysql-shell/en/configuring-router-user.html https://dev.mysql.com/doc/mysql-router/en/mysqlrouter.html#option_mysqlrouter_account", "detectedProblems": [ { "level": "Error", "dbObject": "mysql_router_test@%", "description": " - router user with deprecated authentication method." } ] }

La comprobación previa devuelve un error, ya que la cuenta de mysql_router_test utiliza un método de autenticación obsoleto, como, por ejemplo, mysql_native_password o sha256_password.

Para comprobar el método de autenticación utilizado:

SELECT user, host, plugin FROM mysql.user WHERE user = 'mysql_router_test';

Solución:

Actualice la cuenta de MySQL Router para usar la autenticación de caching_sha2_password:

ALTER USER 'mysql_router_test'@'%' IDENTIFIED WITH caching_sha2_password BY 'new_password';

También puede actualizar MySQL Router a la versión más reciente para asegurarse de que ya no se utilicen los métodos de autenticación obsoletos. A partir de la versión 8.0.19, también puede indicar a MySQL Router que utilice una cuenta dedicada creada con la AdminAPI.

partitionsWithPrefixKeys

Nivel de comprobación previa: error

Comprobación de las particiones por clave mediante columnas con índices de claves de prefijo

Esta comprobación previa identifica las tablas particionadas que utilizan columnas con índices de claves de prefijo en su clave de partición. Los índices de los prefijos de columna no se admiten para la partición de claves; la función de partición los ignora y no se permiten a partir de MySQL 8.4.0.

Para obtener más información, consulte la sección Restrictions and limitations on partitioning que se encuentra en la documentación de MySQL.

Ejemplo de código de salida:

{ "id": "partitionsWithPrefixKeys", "title": "Checks for partitions by key using columns with prefix key indexes", "status": "OK", "description": "Indexes on column prefixes are not supported for key partitioning, they are ignored by the partition function and so they are not allowed as of 8.4.0. This check identifies tables with partitions defined this way, they should be fixed before upgrading to 8.4.0.", "documentationLink": "https://dev.mysql.com/doc/refman/en/partitioning-limitations.html", "detectedProblems": [ { "level": "Error", "dbObject": "test.test_partition_prefix", "description": "Error: the `test`.`test_partition_prefix` table uses partition by KEY using the following columns with prefix index: name." } ] }

Solución:

-- Check for prefix indexes (Sub_part column shows prefix length) SHOW INDEX FROM test.test_partition_prefix; -- Option 1: Change partition to use non-prefix columns only ALTER TABLE test.test_partition_prefix PARTITION BY KEY (id) PARTITIONS 4; -- Option 2: Remove prefix from index ALTER TABLE test.test_partition_prefix DROP PRIMARY KEY, ADD PRIMARY KEY (id, name); -- Full column, no prefix -- Option 3: Remove partitioning ALTER TABLE test.test_partition_prefix REMOVE PARTITIONING;
columnDefinition

Nivel de comprobación previa: error

Comprobación de si hay errores en las definiciones de las columnas

Esta comprobación previa valida que todas las definiciones de columnas sean compatibles con los requisitos de MySQL 8.4. Identifica específicamente las columnas del tipo FLOAT o DOUBLE con el indicador AUTO_INCREMENT establecido, que ya no es compatible con MySQL 8.4.

Ejemplo de código de salida:

{ "id": "columnDefinition", "title": "Checks for errors in column definitions", "status": "OK", "description": "Identifies column definitions that may not be supported in future versions of MySQL", "detectedProblems": [ { "level": "Error", "dbObject": "test.test_column_def.id", "description": "The column is of type FLOAT and has the AUTO_INCREMENT flag set, this is no longer supported." } ] }

Solución:

Cambie el tipo de columna de FLOAT o DOUBLE a un tipo entero:

-- Check current definition SHOW CREATE TABLE test.test_column_def\G -- Change FLOAT AUTO_INCREMENT to BIGINT AUTO_INCREMENT ALTER TABLE test.test_column_def MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; -- Verify SHOW CREATE TABLE test.test_column_def\G

Comprobaciones previas de Aurora MySQL que informan de errores

Las siguientes comprobaciones previas son específicas de Aurora MySQL:

auroraUnsupportedPluginsCheck

Nivel de comprobación previa: error

Comprobación de si hay complementos no compatibles

Esta comprobación previa específica de Aurora identifica los complementos que no son compatibles con la versión 8.4 de Aurora MySQL. Aurora cuenta con requisitos de compatibilidad de complementos específicos que difieren de los de Community MySQL.

Ejemplo de código de salida:

{ "id": "auroraUnsupportedPluginsCheck", "title": "Check for unsupported plugins", "status": "OK", "description": "Checks for unsupported plugins installed in the database", "documentationLink": "https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/", "detectedProblems": [ { "level": "Error", "dbObject": "all", "description": "Plugin simple_parser loaded in the engine. To proceed with the upgrade, remove this plugin." } ] }

Solución:

Desinstale los complementos no compatibles:

UNINSTALL PLUGIN plugin_name;
auroraUnsupportedComponentsCheck

Nivel de comprobación previa: error

Comprobación de si hay componentes no compatibles

Esta comprobación previa valida que ningún componente de MySQL que no sea compatible con la versión 8.4 de Aurora MySQL esté instalado o activo actualmente. Los componentes son diferentes de los complementos y proporcionan una funcionalidad ampliada a través de la infraestructura de componentes.

Ejemplo de código de salida:

{ "id": "auroraUnsupportedComponentsCheck", "title": "Check for unsupported components", "status": "OK", "description": "Checks for unsupported components installed in the database", "documentationLink": "https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/", "detectedProblems": [ { "level": "Error", "dbObject": "all", "description": "Component file://component_log_sink_json loaded in the engine. To proceed with the upgrade, uninstall this component." } ] }

Solución:

Desinstale los componentes no compatibles:

UNINSTALL COMPONENT 'component_name';
auroraUpgradeCheckForSysSchemaObjectTypeMismatch

Nivel de comprobación previa: error

Comprobación de si el tipo de objeto no coincide con el esquema sys

Esta comprobación previa valida que todos los objetos del esquema sys tengan los tipos y definiciones de objetos correctos. El esquema sys es un esquema de sistema que proporciona vistas y procedimientos para la supervisión y el diagnóstico de las bases de datos. Se pueden producir discordancias si el esquema se ha modificado manualmente o se ha dañado.

Ejemplo de código de salida:

{ "id": "auroraUpgradeCheckForSysSchemaObjectTypeMismatch", "title": "Check object type mismatch for sys schema.", "status": "OK", "description": "Database contains objects with type mismatch for sys schema.", "detectedProblems": [ { "level": "Error", "dbObject": "sys.host_summary", "description": "Your object sys.host_summary has a type mismatch. To fix the inconsistency we recommend to rename or remove the object before upgrading (use RENAME TABLE command)." } ] }

Solución:

-- Check the object type SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.tables WHERE TABLE_SCHEMA = 'sys' AND TABLE_NAME = 'host_summary'; -- Option 1: Rename the mismatched object RENAME TABLE sys.host_summary TO sys.host_summary_backup; -- Option 2: Drop the mismatched object DROP TABLE sys.host_summary;

Advertencias

Las siguientes comprobaciones previas generan advertencias cuando se produce un error en la comprobación previa, pero se puede continuar con la actualización.

Comprobaciones previas de MySQL que informan de advertencias

Las siguientes comprobaciones previas proceden de Community MySQL:

deprecatedDefaultAuth

Nivel de comprobación previa: advertencia

Comprobación de si hay métodos de autenticación predeterminados obsoletos o no válidos en las variables del sistema

Esta comprobación previa valida que la variable del sistema default_authentication_plugin no esté configurada para métodos de autenticación obsoletos.

importante

MySQL 8.4.0 elimina por completo la opción default_authentication_plugin obsoleta. El complemento mysql_native_password se encuentra está deshabilitado de forma predeterminada a partir de MySQL 8.4.0, pero puede eliminarse en futuras versiones.

Para obtener más información sobre los cambios en la autenticación de la versión 8.4, consulte Consideraciones de seguridad para actualizar de la versión 3 a la versión 8.4 de Aurora MySQL.

Ejemplo de código de salida:

{ "id": "deprecatedDefaultAuth", "title": "Check for deprecated or invalid default authentication methods in system variables.", "status": "OK", "description": "The following variables have problems with their set authentication method:", "detectedProblems": [ { "level": "Warning", "dbObject": "default_authentication_plugin", "description": "mysql_native_password authentication method is deprecated and it should be considered to correct this before upgrading to 8.4.0 release." }, { "level": "Warning", "dbObject": "authentication_policy", "description": "mysql_native_password authentication method is deprecated and it should be considered to correct this before upgrading to 8.4.0 release." } ] }

Solución:

Actualice las variables del sistema de autenticación para usar caching_sha2_password:

  1. Vaya a la consola de Amazon RDS y diríjase a Grupos de parámetros.

  2. Seleccione el grupo de parámetros del clúster de la base de datos.

  3. Modifique los siguientes parámetros:

    • default_authentication_plugin = caching_sha2_password

    • authentication_policy = caching_sha2_password,*,

  4. Aplique los cambios. Es posible que sea necesario reiniciar.

Asegúrese de que los clientes de la aplicación admitan la autenticación de caching_sha2_password antes de realizar este cambio. Es posible que algunas bibliotecas antiguas de clientes de MySQL no admitan este método de autenticación.

foreignKeyReferences

Nivel de comprobación previa: advertencia

Comprobación de si las claves externas no hacen referencia a un índice único completo

Esta comprobación previa garantiza que todas las restricciones de claves externas hagan referencia a índices completos de claves únicos o principales. Las claves externas para índices parciales podrían dejar de utilizarse a partir de MySQL 8.4.0.

Ejemplo de código de salida:

{ "id": "foreignKeyReferences", "title": "Checks for foreign keys not referencing a full unique index", "status": "OK", "description": "Foreign keys to partial indexes may be forbidden as of 8.4.0, this check identifies such cases to warn the user.", "detectedProblems": [ { "level": "Warning", "dbObject": "sample.child_table_ibfk_1", "description": "invalid foreign key defined as 'child_table(parent_name)' references a non unique key at table 'parent_table'." } ] }

Solución:

Elija la opción que mejor funcione con la aplicación:

-- Option 1: Add unique index on parent table (if values are unique) ALTER TABLE test.parent_table ADD UNIQUE INDEX idx_parent_name_unique (parent_name); -- Option 2: Drop the foreign key if not needed ALTER TABLE test.child_table DROP FOREIGN KEY child_table_ibfk_1;

Comprobaciones previas de Aurora MySQL que informan de advertencias

Las siguientes comprobaciones previas son específicas de Aurora MySQL:

auroraValidatePasswordPluginCheck

Nivel de comprobación previa: advertencia

Comprobación de si el complemento validate_password se ha quedado obsoleto

Esta comprobación previa identifica el uso del complemento validate_password que se ha quedado obsoleto. En MySQL 8.0+, la funcionalidad validate_password se volvió a implementar como un componente (component_validate_password). La versión 8.4 de Aurora MySQL requiere la migración a la implementación basada en componentes.

Para obtener más información, consulte Migración de componentes de validación de contraseñas.

Ejemplo de código de salida:

{ "id": "auroraValidatePasswordPluginCheck", "title": "Check for deprecated validate_password plugin", "status": "OK", "description": "The validate_password plugin is deprecated in Aurora MySQL 8.4", "detectedProblems": [ { "level": "Warning", "dbObject": "validate_password", "description": "The validate_password plugin is deprecated and will be removed in a future release. It is recommended to transition to the validate_password component." } ] }

Solución:

-- Check current plugin status SELECT plugin_name, plugin_status FROM information_schema.plugins WHERE plugin_name = 'validate_password'; -- Uninstall the plugin UNINSTALL PLUGIN validate_password; -- Install the component replacement INSTALL COMPONENT 'file://component_validate_password'; -- Verify SELECT * FROM mysql.component WHERE component_urn LIKE '%validate_password%';

​Avisos

La siguiente comprobación previa genera un aviso cuando se produce un error en ella, pero se puede continuar con la actualización.

invalidPrivileges

Nivel de comprobación previa: aviso

Comprobación de los privilegios de usuario que se eliminarán

Esta comprobación previa identifica las cuentas de usuario con privilegios que se van a eliminar o modificar en MySQL 8.4. El privilegio SET_USER_ID se eliminará como parte del proceso de actualización. Si no se utilizan los privilegios, no es necesario realizar ninguna acción. De lo contrario, asegúrese de dejar de utilizarlos antes de realizar la actualización, ya que se perderán.

Ejemplo de código de salida:

{ "id": "invalidPrivileges", "title": "Checks for user privileges that will be removed", "status": "OK", "description": "Verifies for users containing grants to be removed as part of the upgrade process.", "detectedProblems": [ { "level": "Notice", "dbObject": "'test_user'@'localhost'", "description": "The user 'test_user'@'localhost' has the following privileges that will be removed as part of the upgrade process: SET_USER_ID" } ] }

Solución:

Se trata de un aviso informativo; no es necesario realizar ninguna acción. El privilegio SET_USER_ID se eliminará automáticamente durante el proceso de actualización.

Sin embargo, si la aplicación se basa en el privilegio SET_USER_ID, revísela y actualícela antes de realizar la actualización.

Errores, advertencias o avisos

Las siguientes comprobaciones previas pueden devolver un error, una advertencia o un aviso en función del resultado de la comprobación previa.

authMethodUsage

Nivel de comprobación previa: error, advertencia o aviso

Comprobación de si hay métodos de autenticación de usuario obsoletos o no válidos

Esta comprobación previa identifica las cuentas de usuario mediante métodos de autenticación que se han quedado obsoletos o que se eliminarán en MySQL 8.4. El complemento de autenticación mysql_native_password se ha quedado obsoleto y se encuentra deshabilitado de forma predeterminada a partir de MySQL 8.4.0. El complemento puede eliminarse en futuras versiones.

El nivel de gravedad es dinámico en función del ciclo de vida de la característica: Aviso antes de la obsolescencia, Advertencia después de la obsolescencia y Error después de la eliminación.

Ejemplo de código de salida:

{ "id": "authMethodUsage", "title": "Check for deprecated or invalid user authentication methods.", "status": "OK", "description": "Some users are using authentication methods that may be deprecated or removed, please review the details below.", "detectedProblems": [ { "level": "Warning", "dbObject": "testuser@localhost", "description": "" } ] }

Solución:

Actualice las cuentas de usuarios para utilizar la autenticación de caching_sha2_password:

ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password BY 'new_password';
nota

No es necesario realizar ninguna acción para las cuentas del sistema interno de Aurora. Se actualizan automáticamente durante el proceso de actualización. El intento de modificar estas cuentas manualmente puede provocar problemas con la funcionalidad de Aurora.

pluginUsage

Nivel de comprobación previa: error, advertencia o aviso

Comprobación del uso de complementos obsoletos o eliminados

Esta comprobación previa identifica los complementos que se han quedado obsoletos o se han eliminado en MySQL 8.4. Examina todos los complementos activos e informa sobre su estado de obsolescencia. El nivel de gravedad es dinámico en función del ciclo de vida de la característica.

Ejemplo de código de salida:

{ "id": "pluginUsage", "title": "Check for deprecated or removed plugin usage.", "status": "OK", "description": "The following plugins are ACTIVE and they have been deprecated or removed.", "detectedProblems": [ { "level": "Error", "dbObject": "keyring_file", "description": "The 'keyring_file' plugin is removed as of MySQL 8.4.0. It must not be used anymore, please use the 'component_keyring_file' component instead." } ] }

Solución:

Desinstale los complementos obsoletos e instale los de reemplazo:

-- Check installed plugins SELECT plugin_name, plugin_status FROM information_schema.plugins WHERE plugin_name IN ('keyring_file', 'keyring_encrypted_file', 'keyring_oci', 'authentication_fido'); -- Uninstall and replace (example for keyring_file) UNINSTALL PLUGIN keyring_file; INSTALL COMPONENT 'file://component_keyring_file'; -- Verify SELECT * FROM mysql.component WHERE component_urn LIKE '%keyring%';

En la siguiente tabla se enumeran los complementos obsoletos y sus reemplazos:

Complemento Reemplazo
keyring_file component_keyring_file
keyring_encrypted_file component_keyring_encrypted_file
keyring_oci component_keyring_oci
authentication_fido authentication_webauthn
checkTableCommand

Nivel de comprobación previa: error, advertencia o aviso

Problemas notificados por el comando check table x for upgrade

Esta comprobación previa ejecuta el comando CHECK TABLE ... FOR UPGRADE en todas las tablas de usuario para identificar problemas estructurales, características obsoletas o incompatibilidades con MySQL 8.4. El comando realiza una validación exhaustiva de la estructura y los metadatos de la tabla.

A diferencia de otras comprobaciones previas, puede devolver un error, una advertencia o un aviso en función del resultado de CHECK TABLE. Si esta comprobación previa devuelve alguna tabla, revísela detenidamente, junto con el código de devolución y el mensaje antes de iniciar la actualización.

Ejemplo de código de salida:

{ "id": "checkTableCommand", "title": "Issues reported by 'check table x for upgrade' command", "status": "OK", "description": "Issues reported by 'check table x for upgrade' command", "detectedProblems": [ { "level": "Error", "dbObject": "test.orphaned_view", "description": "View 'test.orphaned_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them" }, { "level": "Error", "dbObject": "test.orphaned_view", "description": "Corrupt" } ] }

Solución:

Revise los objetos notificados y corríjalos o elimínelos antes de realizar la actualización. Entre los problemas más frecuentes se incluyen:

  • Vistas que hacen referencia a tablas o columnas no válidas: elimine o vuelva a crear la vista.

  • Tablas dañadas: ejecute REPAIR TABLE o vuelva a crear la tabla.

  • Desencadenadores a los que les falta el atributo CREATED: vuelva a crear el desencadenador.

Para obtener más información, consulte la sección CHECK TABLE statement en la documentación de MySQL.