Ao executar uma pré-verificação antes de atualizar uma instância do ApsaraDB RDS for MySQL para uma nova versão principal do mecanismo, o sistema valida diversas condições e relata problemas bloqueantes. Esta página explica cada item de verificação, o que é analisado, os motivos da falha e como corrigi-la.
Caso encontre um erro não listado aqui, envie um ticket.
Itens de verificação
A tabela abaixo abrange todos os itens retornados pela pré-verificação. Os caminhos de upgrade compatíveis são MySQL 5.6 → MySQL 5.7 e MySQL 5.7 → MySQL 8.0.
check_ins_major_version
Mensagem de erro: The current engine version does not support this operation.
O que é verificado: Se a versão da instância atende aos pré-requisitos para um upgrade de versão principal do mecanismo.
Causa: A instância não executa o MySQL 5.6 ou MySQL 5.7. Apenas upgrades do MySQL 5.6 para o MySQL 5.7, ou do MySQL 5.7 para o MySQL 8.0, são compatíveis.
Solução: Consulte Pré-requisitos para upgrade de versão principal do mecanismo para verificar os caminhos compatíveis e os requisitos.
check_ins
Mensagem de erro: The specified instance does not exist or is not supported.
O que é verificado: A existência da instância.
Causa: A instância foi excluída ou não existe.
Solução: Verifique se a instância de destino existe antes de executar a pré-verificação.
check_ins_status
Mensagem de erro: The current DB instance state does not support this operation.
O que é verificado: Se a instância está no estado Running.
Causa: Outra operação está em andamento (por exemplo, reinicialização da instância ou criação de conexão de rede) e a instância não se encontra no estado Running.
Solução: Aguarde a conclusão da tarefa atual. Após a instância retornar ao estado Running, inicie a pré-verificação novamente.
check_master_ins
Mensagem de erro: The current DB instance type does not support this operation.
O que é verificado: Se a instância é primária.
Causa: A instância é de recuperação de desastres ou somente leitura, e não uma instância primária.
Solução: Execute a pré-verificação em uma instância primária.
check_ins_locked_state
Mensagem de erro: The current DB instance lock mode does not support this operation.
O que é verificado: Se a instância está bloqueada.
Causa: A instância está no estado Locking.
Solução: Desbloqueie a instância. Depois que o status mudar para Running, execute a pré-verificação novamente. Para mais informações, consulte O que fazer se minha instância estiver no estado Locking?
check_maxscale_kernel
Mensagem de erro: The Maxscale version of the instance is too low. Upgrade the Maxscale version first.
O que é verificado: Se a versão secundária do proxy de banco de dados é compatível.
Causa: A instância utiliza um proxy de banco de dados com versão secundária anterior a 1.13.41.
Solução: Atualize o proxy para uma versão secundária compatível e tente novamente o upgrade da versão principal do mecanismo.
check_ins_tde_state
Mensagem de erro: This instance is not configured with the specified TDE status.
O que é verificado: Se a criptografia transparente de dados (TDE) está ativada.
Causa: O TDE está habilitado na instância.
Solução: Não é possível atualizar instâncias com TDE ativado diretamente pelo console. Para o procedimento alternativo de upgrade, consulte Atualizar a versão do banco de dados.
check_target_ins_level
Mensagem de erro: The current DB instance class does not support this operation. (Error code: InvalidInstanceLevel.Malformed)
O que é verificado: Se o tipo atual da instância está disponível para compra.
Causa: A instância utiliza um tipo de instância descontinuado.
Solução: Altere a instância para um tipo atualmente disponível e tente o upgrade novamente.
check_target_read_level
Mensagem de erro: The read-only instance class is not supported in the target instance.
O que é verificado: Se o tipo da instância somente leitura está disponível para compra.
Causa: A instância somente leitura utiliza um tipo descontinuado. Esta verificação aplica-se a instâncias que usam SSDs locais.
Solução: Altere a instância somente leitura para um tipo disponível e execute a pré-verificação novamente.
Para alterar o tipo da instância, consulte Alterar a configuração da instância.
Para encontrar tipos de instância disponíveis, consulte Tipos de instância para instâncias somente leitura padrão ou Tipos de instância para instâncias somente leitura Yitian.
check_upgrade_check_task
Mensagem de erro: The task already exists.
O que é verificado: Se já existe uma tarefa de pré-verificação em execução para esta instância.
Causa: Uma pré-verificação de upgrade de versão principal do mecanismo já está em andamento.
Solução: Aguarde a conclusão da pré-verificação. Quando o status da instância mudar para Running, execute a pré-verificação novamente.
check_upgrade_task
Mensagem de erro: The task already exists.
O que é verificado: Se já existe uma tarefa de upgrade de versão principal do mecanismo em execução para esta instância.
Causa: Um upgrade de versão principal do mecanismo já está em andamento.
Solução: Aguarde a conclusão do upgrade. Quando o status da instância mudar para Running, execute a pré-verificação novamente.
check_storage_type
Mensagem de erro: Standard SSDs do not support this operation. Please upgrade to ESSD.
O que é verificado: Se a instância utiliza SSDs padrão.
Causa: A instância utiliza SSDs padrão.
Solução: Atualize o tipo de armazenamento para ESSD (SSD empresarial) e tente o upgrade novamente.
check_source_category
Mensagem de erro: The specified source category is invalid.
O que é verificado: Se a instância pertence à Basic Edition ou High-availability Edition.
Causa: A instância pertence a uma edição diferente.
Solução: As pré-verificações de upgrade de versão principal do mecanismo são compatíveis apenas com instâncias da Basic Edition ou High-availability Edition.
check_ins_biz_type
Mensagem de erro: The specified business type is invalid.
O que é verificado: Se a instância é de nuvem pública.
Causa: A instância não é de nuvem pública.
Solução: As pré-verificações de upgrade de versão principal do mecanismo são compatíveis apenas com instâncias de nuvem pública.
check_ins_tables_number
Mensagem de erro: Upgrade not allowed due to an excessive number of tables: more than 1.000.000.
O que é verificado: O número total de tabelas na instância.
Causa: A instância possui mais de 1.000.000 de tabelas. Esse limite aplica-se tanto a SSDs locais quanto a discos em nuvem.
Solução: Exclua as tabelas redundantes antes de executar a pré-verificação.
check_ins_db_engine
Mensagem de erro: The instance contains tables that use the MyISAM, Memory, TokuDB, Sphinx, or RocksDB engine.
O que é verificado: Se alguma tabela utiliza um mecanismo de armazenamento diferente do InnoDB.
Causa: A instância contém tabelas usando MyISAM, Memory, TokuDB, Sphinx ou RocksDB. Esses mecanismos de armazenamento não são compatíveis com upgrades de versão principal do mecanismo.
Solução: Converta todas as tabelas para InnoDB antes de atualizar. Se o banco de dados já usar InnoDB, mas tabelas individuais utilizarem outros mecanismos, execute o seguinte comando para cada tabela afetada:
ALTER TABLE <table_name> engine=InnoDB;
check_ins_fts
Mensagem de erro: The current instance has a full-text index, and its minor version is earlier than 20221130.
O que é verificado: Se a instância possui índices de texto completo criados no tablespace do sistema.
Causa: Em versões mais antigas do RDS for MySQL 5.6, os índices de texto completo são criados no tablespace do sistema. Durante um upgrade, esses índices podem corromper o tablespace. Esse problema foi corrigido na versão secundária 20221130 do RDS for MySQL 5.6, em que os índices de texto completo são criados em um tablespace separado.
Solução: Antes de atualizar do RDS for MySQL 5.6 para o 5.7, remova quaisquer índices de texto completo do tablespace do sistema.
Certifique-se de que a instância execute a versão secundária 20221130 ou posterior do RDS for MySQL 5.6. Caso contrário, atualize para a versão secundária mais recente do RDS for MySQL 5.6 primeiro.
-
Remova o índice de texto completo no tablespace do sistema. Utilize o nome da tabela exibido no prompt de erro.
ALTER TABLE $table_name DROP INDEX $fts_name; -
Recrie o índice de texto completo.
ALTER TABLE $table_name ADD FULLTEXT INDEX $fts_name; -
Verifique se não restam índices de texto completo no tablespace do sistema. A consulta a seguir retorna tais índices. Um resultado vazio indica que a pré-verificação não falhará devido a esse problema.
SELECT NAME FROM information_schema.INNODB_SYS_TABLES WHERE TABLE_ID IN ( SELECT CONV(SUBSTRING_INDEX(SUBSTRING_INDEX(NAME, '_', -4),'_', 1),16,10) FROM INNODB_SYS_TABLES WHERE NAME LIKE '%fts_00000000%' AND SPACE = 0);
check_read_ins_number
Mensagem de erro: The number of read-only instances cannot be greater than 8.
O que é verificado: O número de instâncias somente leitura para instâncias que utilizam SSDs locais.
Causa: A instância possui mais de 8 instâncias somente leitura. Este limite aplica-se apenas a instâncias que usam SSDs locais.
Solução: Libere as instâncias somente leitura excedentes. Após a conclusão do upgrade, recrie-as.
check_slave_state
Mensagem de erro: The secondary node is unhealthy or has replication delays.
O que é verificado: A integridade e a latência de replicação do nó secundário.
Causa: O nó secundário está em estado anormal ou apresenta atraso de replicação.
Solução: No console, verifique as métricas de monitoramento Node Replication Thread Status (seconds) e Node Replication Latency (seconds) em Monitoring and alerts. Aguarde o retorno do nó secundário à normalidade e execute a pré-verificação novamente.
check_account
Mensagem de erro: The instance has an aliyun_root account.
O que é verificado: A existência de uma conta aliyun_root na instância.
Causa: Um usuário criou manualmente uma conta aliyun_root no RDS for MySQL 5.6. A conta aliyun_root é uma conta de sistema padrão no RDS for MySQL 5.7 e posteriores. Se ela já existir na versão 5.6, o upgrade para a 5.7 falhará com um erro de nome duplicado.
Solução: Exclua ou renomeie a conta aliyun_root criada manualmente antes de executar a pré-verificação. Para informações sobre contas de sistema, consulte Contas de sistema.
check_sys_schema
Mensagem de erro: The instance already has a sys database.
O que é verificado: A existência de um banco de dados sys na instância.
Causa: O banco de dados sys é criado por padrão no RDS for MySQL 5.7. Se ele já existir em uma instância 5.6, o upgrade para a 5.7 falhará.
Solução: Renomeie o banco de dados sys existente. Como o MySQL não oferece suporte a RENAME DATABASE, execute ALTER TABLE ... RENAME para cada tabela individualmente.
Para confirmar a existência do banco de dados sys, execute:
SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='sys';
check_table_discard
Mensagem de erro: The instance contains discarded tables.
O que é verificado: Se a instância possui tabelas com tablespaces descartados (tabelas nas quais ALTER TABLE ... DISCARD TABLESPACE foi executado).
Causa: Existem tabelas descartadas na instância.
Solução: Consulte e exclua as tabelas descartadas.
SELECT space,name FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE FS_BLOCK_SIZE=0 AND FILE_SIZE=0 AND name NOT LIKE '%#sql%';
check_table_foreign_key
Mensagem de erro: A partitioned table contains foreign keys.
O que é verificado: Se alguma tabela particionada possui chaves estrangeiras ou se tabelas particionadas são referenciadas por chaves estrangeiras de outras tabelas.
Causa: Uma tabela particionada contém uma chave estrangeira ou a chave estrangeira de outra tabela referencia uma tabela particionada.
Solução: Resolva os conflitos entre chaves estrangeiras e tabelas particionadas.
-
Consulte as tabelas particionadas que contêm chaves estrangeiras.
SELECT DISTINCT a.TABLE_SCHEMA, a.TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS a, information_schema.PARTITIONS b WHERE a.CONSTRAINT_TYPE='FOREIGN KEY' AND a.TABLE_SCHEMA = b.TABLE_SCHEMA AND a.TABLE_NAME = b.TABLE_NAME AND (b.PARTITION_NAME IS NOT NULL OR b.SUBPARTITION_NAME IS NOT NULL); -
Consulte as tabelas particionadas referenciadas por chaves estrangeiras de outras tabelas.
SELECT DISTINCT a.TABLE_SCHEMA, a.TABLE_NAME, a.REFERENCED_TABLE_SCHEMA, a.REFERENCED_TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE a, information_schema.PARTITIONS b WHERE a.REFERENCED_TABLE_SCHEMA = b.TABLE_SCHEMA AND a.REFERENCED_TABLE_NAME = b.TABLE_NAME AND (b.PARTITION_NAME IS NOT NULL OR b.SUBPARTITION_NAME IS NOT NULL);
check_column_length
Mensagem de erro: One or more views have a column name with a length of 64 or more characters.
O que é verificado: Se alguma view possui nomes de coluna com 64 caracteres ou mais.
Causa: O MySQL não oferece suporte a nomes de coluna de view com 64 caracteres ou mais.
Solução: Consulte as views afetadas e exclua-as ou reduza os nomes das colunas.
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS) AND CHAR_LENGTH(COLUMN_NAME) >= 64;
check_foreign_key_constraint
Mensagem de erro: One or more tables have a foreign key constraint name with a length greater than 64 characters.
O que é verificado: Se alguma tabela possui nomes de restrição de chave estrangeira com mais de 64 caracteres.
Causa: Nomes de restrição de chave estrangeira com mais de 64 caracteres não são compatíveis.
Solução: Consulte as tabelas afetadas e exclua ou renomeie as restrições de chave estrangeira.
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1) FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN WHERE CHAR_LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);
check_dictionary_table
Mensagem de erro: The MySQL 5.7 system database contains tables with names that conflict with the MySQL 8.0 data dictionary.
O que é verificado: Se alguma tabela no banco de dados de sistema do MySQL 5.7 compartilha nomes com tabelas usadas pelo dicionário de dados do MySQL 8.0.
Causa: Uma ou mais tabelas no banco de dados de sistema do MySQL 5.7 possuem nomes que entram em conflito com o dicionário de dados do MySQL 8.0.
Solução: Consulte os nomes de tabela conflitantes e exclua-os ou renomeie-os.
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE LOWER(
TABLE_SCHEMA) = 'mysql' and LOWER(TABLE_NAME) IN
('catalogs', 'character_sets', 'check_constraints', 'collations',
'column_statistics', 'column_type_elements', 'columns',
'dd_properties', 'events', 'foreign_key_column_usage', 'foreign_keys',
'index_column_usage', 'index_partitions', 'index_stats',
'indexes', 'parameter_type_elements', 'parameters', 'resource_groups', 'routines',
'schemata', 'st_spatial_reference_systems',
'table_partition_values', 'table_partitions', 'table_stats', 'tables',
'tablespace_files', 'tablespaces', 'triggers', 'view_routine_usage',
'view_table_usage');
check_ins_health
Mensagem de erro: The primary node of the instance is not available.
O que é verificado: Conectividade e disponibilidade da instância.
Causa: Recursos como CPU ou disco estão totalmente utilizados, tornando o nó primário indisponível.
Solução: No console, utilize o recurso de Monitoramento e alertas para verificar se todas as métricas de monitoramento estão dentro dos intervalos normais.
check_table_index_type
Mensagem de erro: MySQL 8.0 does not support BTREE indexes on spatial data types.
O que é verificado: Se alguma tabela no MySQL 5.7 possui índices BTREE em colunas de tipos de dados espaciais. Esta verificação aplica-se apenas a upgrades para o MySQL 8.0.
Causa: O MySQL 8.0 não oferece suporte a índices BTREE em tipos de dados espaciais (GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION).
Solução: Consulte os índices afetados e exclua-os ou modifique-os.
SELECT DISTINCT s.* FROM INFORMATION_SCHEMA.STATISTICS s
INNER JOIN INFORMATION_SCHEMA.COLUMNS c
ON s.TABLE_SCHEMA = c.TABLE_SCHEMA
AND s.TABLE_NAME = c.TABLE_NAME
AND s.COLUMN_NAME = c.COLUMN_NAME
WHERE s.TABLE_SCHEMA NOT IN ('mysql', 'sys')
AND c.DATA_TYPE IN ('GEOMETRY', 'POINT', 'LINESTRING', 'POLYGON', 'MULTIPOINT',
'MULTILINESTRING', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION')
AND s.INDEX_TYPE = 'BTREE';