View a markdown version of this page

Verifique previamente as descrições para atualizar o Aurora MySQL versão 3 para a versão 8.4 - Amazon Aurora

Verifique previamente as descrições para atualizar o Aurora MySQL versão 3 para a versão 8.4

As pré-verificações a seguir são executadas quando o Aurora MySQL é atualizado da versão 3 (compatível com MySQL 8.0) para o Aurora MySQL versão 8.4 (compatível com MySQL 8.4). Essas pré-verificações identificam possíveis problemas de compatibilidade antes da atualização ser iniciada.

Erros

As pré-verificações a seguir geram erros quando a pré-verificação falha e impede que a atualização continue.

Pré-verificações do MySQL que relatam erros

As seguintes pré-verificações são do MySQL Community:

deprecatedRouterAuthMethod

Precheck level: Error

Check for deprecated or invalid authentication methods in use by MySQL Router internal accounts

Essa pré-verificação valida que as contas internas do MySQL Router não estão usando métodos de autenticação obsoletos ou inválidos que podem ser removidos ou alterados no MySQL 8.4. As contas do MySQL Router são criadas automaticamente no momento da inicialização, quando o Router não é instruído a usar uma conta existente.

Saída de exemplo:

{ "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." } ] }

A pré-verificação exibe um erro porque a conta mysql_router_test está usando um método de autenticação obsoleto, como mysql_native_password ou sha256_password.

Para verificar o método de autenticação em uso:

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

Resolução:

Atualize a conta do MySQL Router para usar a autenticação caching_sha2_password:

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

Como alternativa, atualize o MySQL Router para a versão mais recente a fim de garantir que métodos de autenticação obsoletos não sejam mais usados. Desde a versão 8.0.19, também é possível instruir o MySQL Router a usar uma conta dedicada criada por meio da AdminAPI.

partitionsWithPrefixKeys

Precheck level: Error

Checks for partitions by key using columns with prefix key indexes

Essa pré-verificação identifica tabelas particionadas que usam colunas com índices de chave de prefixo na respectiva chave de particionamento. Não é possível usar índices em prefixos de coluna para particionamento de chaves. Eles são ignorados pela função de partição e não são permitidos a partir do MySQL 8.4.0.

Para ter mais informações, consulte Restrictions and limitation on partitioning na documentação do MySQL.

Saída de exemplo:

{ "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." } ] }

Resolução:

-- 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

Precheck level: Error

Checks for errors in column definitions

Essa pré-verificação valida se todas as definições de coluna são compatíveis com os requisitos do MySQL 8.4. Ela identifica especificamente colunas do tipo FLOAT ou DOUBLE com o conjunto de sinalizadores AUTO_INCREMENT, que não é mais compatível no MySQL 8.4.

Saída de exemplo:

{ "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." } ] }

Resolução:

Altere o tipo de coluna de FLOAT ou DOUBLE para um tipo inteiro:

-- 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

Pré-verificações do Aurora MySQL que relatam erros

As seguintes pré-verificações são específicas do Aurora MySQL:

auroraUnsupportedPluginsCheck

Precheck level: Error

Check for unsupported plugins

Essa pré-verificação específica do Aurora identifica plug-ins que não são compatíveis com o Aurora MySQL versão 8.4. O Aurora tem requisitos específicos de compatibilidade de plug-in que diferem do MySQL da comunidade.

Saída de exemplo:

{ "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." } ] }

Resolução:

Desinstale os plug-ins não compatíveis:

UNINSTALL PLUGIN plugin_name;
auroraUnsupportedComponentsCheck

Precheck level: Error

Check for unsupported components

Essa pré-verificação valida que nenhum componente do MySQL que não é compatível com o Aurora MySQL versão 8.4 está instalado ou ativo no momento. Os componentes são diferentes dos plug-ins e oferecem funcionalidade estendida por meio da infraestrutura de componentes.

Saída de exemplo:

{ "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." } ] }

Resolução:

Desinstale os componentes não compatíveis:

UNINSTALL COMPONENT 'component_name';
auroraUpgradeCheckForSysSchemaObjectTypeMismatch

Precheck level: Error

Check object type mismatch for sys schema

Essa pré-verificação valida se todos os objetos no esquema sys têm os tipos e definições de objeto corretos. O esquema sys é um esquema do sistema que oferece visualizações e procedimentos para monitoramento e diagnóstico de banco de dados. Poderá haver incompatibilidades se o esquema tiver sido modificado ou corrompido manualmente.

Saída de exemplo:

{ "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)." } ] }

Resolução:

-- 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;

Avisos

As pré-verificações a seguir geram avisos quando a pré-verificação falha e a atualização pode continuar.

Pré-verificações do MySQL que exibem avisos

As seguintes pré-verificações são do MySQL Community:

deprecatedDefaultAuth

Precheck level: Warning

Check for deprecated or invalid default authentication methods in system variables

Essa pré-verificação valida se a variável do sistema default_authentication_plugin não está definida como métodos de autenticação obsoletos.

Importante

O MySQL 8.4.0 remove totalmente a opção default_authentication_plugin obsoleta. O plug-in mysql_native_password está desabilitado por padrão a partir do MySQL 8.4.0 e está sujeito à remoção em uma versão futura.

Para ter mais informações sobre as alterações de autenticação na versão 8.4, consulte Considerações sobre segurança para a atualização do Aurora MySQL versão 3 para a 8.4.

Saída de exemplo:

{ "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." } ] }

Resolução:

Atualize as variáveis do sistema de autenticação para usar caching_sha2_password:

  1. Acesse o console do Amazon RDS e navegue até Grupos de parâmetros.

  2. Selecione o grupo de parâmetros do cluster de banco de dados.

  3. Modifique os seguintes parâmetros:

    • default_authentication_plugin = caching_sha2_password

    • authentication_policy = caching_sha2_password,*,

  4. Implemente as alterações. Pode ser necessário reinicializar.

Verifique se os clientes da aplicação permitem a autenticação caching_sha2_password antes de fazer essa alteração. Algumas bibliotecas de cliente MySQL mais antigas talvez não permitam esse método de autenticação.

foreignKeyReferences

Precheck level: Warning

Checks for foreign keys not referencing a full unique index

Essa pré-verificação garante que todas as restrições de chave estrangeira façam referência a índices completos de chave primária ou exclusiva. Chaves estrangeiras para índices parciais podem ser proibidas a partir do MySQL 8.4.0.

Saída de exemplo:

{ "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'." } ] }

Resolução:

Escolha a opção que melhor funcione com sua aplicação.

-- 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;

Pré-verificações do Aurora MySQL que exibem avisos

As seguintes pré-verificações são específicas do Aurora MySQL:

auroraValidatePasswordPluginCheck

Precheck level: Warning

Check for deprecated validate_password plugin

Essa pré-verificação identifica o uso d plug-in validate_password obsoleto. No MySQL 8.0 e posterior, a funcionalidade validate_password foi reimplementada como um componente (component_validate_password). O Aurora MySQL versão 8.4 exige a migração para a implementação baseada em componentes.

Para obter mais informações, consulte Migração do componente de validação de senha.

Saída de exemplo:

{ "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." } ] }

Resolução:

-- 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%';

Notices

A pré-verificação a seguir gera um aviso quando a pré-visualização falha e a atualização pode continuar.

invalidPrivileges

Nível de pré-verificação: aviso

Checks for user privileges that will be removed

Essa pré-verificação identifica contas de usuário com privilégios que estão sendo removidos ou modificados no MySQL 8.4. O privilégio SET_USER_ID está sendo removido como parte do processo de atualização. Se os privilégios não estiverem sendo usados, nenhuma ação será necessária. Do contrário, garanta que eles parem de ser usados antes da atualização, pois serão perdidos.

Saída de exemplo:

{ "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" } ] }

Resolução:

Essa é uma mensagem informativa; nenhuma ação é necessária. O privilégio SET_USER_ID será removido automaticamente durante o processo de atualização.

No entanto, se sua aplicação depende do privilégio SET_USER_ID, analise e atualize a aplicação antes de fazer a atualização.

Erros, avisos ou alertas

As pré-verificações a seguir podem exibir um erro, aviso ou alerta, dependendo da saída da pré-verificação.

authMethodUsage

Nível de pré-verificação: erro, aviso ou alerta

Check for deprecated or invalid user authentication methods

Essa pré-verificação identifica contas de usuário que estão usando métodos de autenticação que estão obsoletos ou serão removidos no MySQL 8.4. O plug-in de autenticação mysql_native_password está obsoleto e desabilitado por padrão a partir do MySQL 8.4.0. O plug-in está sujeito à remoção em uma versão futura.

O nível de severidade é dinâmico com base no ciclo de vida do recurso: aviso antes da descontinuação, aviso após a descontinuação e erro após a remoção.

Saída de exemplo:

{ "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": "" } ] }

Resolução:

Atualize as contas de usuário para usar a autenticação caching_sha2_password:

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

Nenhuma ação é necessária para contas de sistema internas do Aurora. Elas são atualizadas automaticamente durante o processo de atualização. A tentativa de modificar essas contas manualmente pode causar problemas na funcionalidade do Aurora.

pluginUsage

Nível de pré-verificação: erro, aviso ou alerta

Check for deprecated or removed plugin usage

Essa pré-verificação identifica plug-ins que foram descontinuados ou removidos no MySQL 8.4. Ela examina todos os plug-ins ativos e relata o respectivo status de descontinuação. O nível de severidade é dinâmico com base no ciclo de vida do recurso.

Saída de exemplo:

{ "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." } ] }

Resolução:

Desinstale os plug-ins obsoletos e instale os respectivos componentes de substituição:

-- 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%';

A seguinte tabela lista os plug-ins obsoletos e as respectivas substituições:

Plug-in Substituição
keyring_file component_keyring_file
keyring_encrypted_file component_keyring_encrypted_file
keyring_oci component_keyring_oci
authentication_fido authentication_webauthn
checkTableCommand

Nível de pré-verificação: erro, aviso ou alerta

Problemas relatados pelo comando check table x for upgrade

Essa pré-verificação executa o comando CHECK TABLE ... FOR UPGRADE em todas as tabelas do usuário para identificar problemas estruturais, recursos obsoletos ou incompatibilidades com o MySQL 8.4. O comando executa uma validação abrangente da estrutura e dos metadados da tabela.

Ao contrário de outras pré-verificações, ela pode exibir um erro, aviso ou alerta, dependendo da saída CHECK TABLE. Se essa pré-verificação exibir alguma tabela, analise-a cuidadosamente, assim como o código de retorno e a mensagem, antes de iniciar a atualização.

Saída de exemplo:

{ "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" } ] }

Resolução:

Analise os objetos relatados e corrija-os ou remova-os antes da atualização. Os problemas comuns incluem:

  • Visualizações que fazem referência a tabelas ou colunas inválidas: elimine ou recrie a visualização.

  • Tabelas corrompidas: execute REPAIR TABLE ou recrie a tabela.

  • Acionadores com atributo CREATED ausente: recrie o acionador.

Consulte mais informações em CHECK TABLE Statement na documentação do MySQL.