Ir para o conteúdo

Como solucionar uma falha na verificação de pré-upgrade em minha instância de banco de dados do Amazon RDS para MySQL?

5 minuto de leitura
0

Quero solucionar a falha na verificação de pré-upgrade que recebo quando tento fazer upgrade na minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para MySQL.

Breve descrição

O Amazon RDS e o Amazon Aurora edição compatível com MySQL têm pré-verificações automáticas que minimizam qualquer tempo de inatividade não planejado durante o upgrade de uma versão. Quando você faz upgrade no MySQL da versão 5.7 para 8.0 ou da 8.0 para 8.4, as pré-verificações detectam qualquer incompatibilidade de dados que possa afetar seu upgrade. Se receber uma falha na verificação de pré-upgrade em sua instância de banco de dados, o upgrade da versão do Amazon RDS para MySQL será interrompido. Em seguida, o Amazon RDS fornece os detalhes da falha na pré-verificação no arquivo de log PrePatchCompatibility.

Para identificar e corrigir o problema, visualize o arquivo de log em Logs e eventos no console do Amazon RDS.

Para obter mais informações sobre as pré-verificações do MySQL, consulte Upgrade checker utility (Utilitário de verificação de upgrade) no site do MySQL.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Revise a mensagem de falha na verificação de pré-upgrade

Para visualizar seu arquivo de log, conclua as seguintes etapas:

  1. Abra o console do Amazon RDS.
  2. No painel de navegação, selecione Bancos de dados e clique no banco de dados que você deseja fazer upgrade.
  3. Selecione a guia Logs e eventos e, em seguida, pesquise PrePatchCompatibility em Eventos recentes.
  4. Revise o arquivo de log PrePatchCompatibility e solucione o problema.
    Observação: na maioria dos casos, a entrada de log inclui um link para a documentação do Amazon RDS para MySQL que descreve como corrigir o problema de incompatibilidade.

Verifique se há mensagens de erros específicos, alertas e mensagens em nível de aviso

No arquivo de log PrePatchCompatibility, é possível receber uma das seguintes mensagens de pré-verificação:

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

Se você receber uma mensagem de ERRO, corrija-os antes de tentar fazer o upgrade. Se você receber uma mensagem de ALERTA, o Amazon RDS não encontrou nenhum erro fatal, mas encontrou alguns possíveis problemas.

Se você receber uma mensagem de AVISO, o Amazon RDS não encontrou nenhum erro ou problema de compatibilidade conhecido. No entanto, verifique o AVISO nos logs de erro.

Liste os arquivos de log e baixe os dados

Para listar os arquivos de log e baixar os dados, conclua as seguintes etapas:

  1. Execute o comando describe-db-log-files da AWS CLI para listar os arquivos de log:

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

    Observação: substitua DB_identifier pelo nome do banco de dados no qual o arquivo de log está.
    Exemplo de saída:

    [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. Execute o comando download-db-log-file-portion para baixar um arquivo de log 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>

    Observação: substitua DB_identifier pelo nome do banco de dados no qual o arquivo de log está.
    Exemplo de saída:

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

Informações relacionadas

Upgrading to MySQL 8.0? Here's what you need to know (Fazendo upgrade para o MySQL 8.0? Aqui está o que você precisa saber) no site do MySQL

Preparing your installation for upgrade (Preparando sua instalação para upgrade) no site do MySQL