O Amazon RDS oferece suporte para as seguintes atualizações in-loco para versões principais do mecanismo de banco de dados MySQL:
-
MySQL 5.7 a MySQL 8.0
-
MySQL 8.0 a MySQL 8.4
nota
Você só pode criar instâncias de banco de dados MySQL versões 5.7, 8.0 e 8.4 com classes de instância de banco de dados de última geração e da geração atual.
Em alguns casos, você deseja atualizar uma instância de banco de dados em execução em uma classe de instância de banco de dados de geração anterior com uma versão do mecanismo MySQL posterior. Nesses casos, primeiro modifique a instância de banco de dados para usar uma classe de instância de última geração ou de geração atual. Depois de fazer isso, você poderá modificar a instância de banco de dados para usar a versão de mecanismo de banco de dados MySQL posterior. Para obter informações sobre classes de instâncias de banco de dados do Amazon RDS, consulte Classes de instância de banco de dados do .
Tópicos
Visão geral de atualizações de versões principais do MySQL
As atualizações da versão principal podem conter as alterações de banco de dados incompatíveis com os aplicativos existentes. Como resultado, o Amazon RDS não aplica atualizações da versão principal automaticamente. Você deve modificar manualmente sua instância de banco de dados. Convém testar completamente qualquer atualização antes de aplicá-la às suas instâncias de produção.
Para realizar uma atualização de versão principal, primeiro execute todas as atualizações de sistema operacional disponíveis. Após a conclusão das atualizações do sistema operacional, atualize para as versões principais, por exemplo, de 5.7 para 8.0 e, depois, para 8.4. Para obter informações sobre a atualização de um cluster de banco de dados multi-AZ do RDS para MySQL, consulte Atualização da versão de mecanismo de um cluster de banco de dados multi-AZ para o Amazon RDS. As instâncias de banco de dados MySQL criadas antes de 24 de abril de 2014 mostrarão uma atualização do sistema operacional disponível enquanto a atualização não for aplicada. Para obter mais informações sobre atualizações do sistema operacional, consulte Aplicar atualizações para uma instância de banco de dados.
Durante uma atualização de versão principal do MySQL, o Amazon RDS executa o binário do MySQL mysql_upgrade
para atualizar tabelas, se necessário. Além disso, o Amazon RDS esvazia as tabelas slow_log
e general_log
durante uma atualização de versão principal. Para preservar as informações do log, salve o conteúdo do log antes da atualização da versão principal.
Em geral, as atualizações da versão principal do MySQL são concluídas em cerca de 10 minutos. Algumas atualizações podem demorar mais por causa do tamanho da classe da instância de banco de dados ou porque a instância não segue certas diretrizes operacionais em Práticas recomendadas do Amazon RDS. Se você atualizar uma instância de banco de dados do console do Amazon RDS, o status dessa instância indicará quando a atualização estiver concluída. Se você atualizar usando a AWS Command Line Interface (AWS CLI), use o comando describe-db-instances e verifique o valor de Status
.
Pré-verificações de atualizações
O Amazon RDS executa verificações prévias antes da atualização para verificar se há incompatibilidades. Essas incompatibilidades variam de acordo com a versão do MySQL para a qual está sendo feita a atualização.
As pré-verificações incluem algumas que estão incluídas com o MySQL e outras que foram criadas especificamente pela equipe do Amazon RDS. Para obter informações sobre as pré-verificações fornecidas pelo MySQL, consulte Utilitário verificador de atualização
As pré-verificações são executadas antes que a instância de banco de dados seja interrompida para a atualização, o que significa que elas não causam nenhum tempo de inatividade quando são executadas. Se as pré-verificações encontrarem uma incompatibilidade, o Amazon RDS cancelará automaticamente a atualização antes que a instância de banco de dados seja interrompida. O Amazon RDS também gera um evento para a incompatibilidade. Para obter mais informações sobre eventos do Amazon RDS, consulte Trabalhar com a notificação de eventos do Amazon RDS.
O Amazon RDS registra informações detalhadas sobre cada incompatibilidade no arquivo de log PrePatchCompatibility.log
. Na maioria dos casos, a entrada de log inclui um link para a documentação do MySQL para corrigir a incompatibilidade. Para obter mais informações sobre como exibir arquivos de log, consulte Como visualizar e listar arquivos de log do banco de dados.
Devido à natureza das pré-verificações, eles analisam os objetos do seu banco de dados. Essa análise resulta no consumo do recurso e aumenta o tempo para que a atualização seja concluída.
Tópicos
Pré-verificações de atualizações do MySQL 8.0 para 8.4
O MySQL 8.4 inclui várias incompatibilidades com o MySQL 8.0. Essas incompatibilidades podem causar problemas durante uma atualização do MySQL 8.0 para o MySQL 8.4. Portanto, pode ser necessária uma certa preparação no seu banco de dados para que a atualização seja bem-sucedida. Veja a seguir uma lista geral dessas incompatibilidades:
-
Não deve haver tabelas que usam funções ou tipos de dados obsoletos.
-
Os gatilhos não devem ter um definidor vazio ou ausente ou um contexto de criação inválido.
-
Não deve haver violações de palavra-chave ou palavra reservada. Algumas palavras-chave podem ser reservadas no MySQL 8.4 que não eram reservadas anteriormente.
Para obter mais informações, consulte Palavras-chave e palavras reservadas
na documentação do MySQL. -
Não deve haver tabelas no banco de dados do sistema
mysql
do MySQL 8.0 com o mesmo nome de uma tabela usada pelo dicionário de dados do MySQL 8.4. -
Não deve haver modos obsoletos do SQL definidos na configuração de variável do sistema
sql_mode
. -
Não deve haver tabelas ou procedimentos armazenados com elementos de coluna
ENUM
ouSET
individuais que excedam 255 caracteres ou 1020 bytes. -
A instalação do MySQL 8.0 não deve usar recursos incompatíveis com o MySQL 8.4.
Para obter mais informações, consulte Recursos removidos no MySQL 8.4
na documentação do MySQL. -
Não deve haver nomes de restrição de chave externa maiores que 64 caracteres.
-
Para obter suporte aprimorado ao Unicode, revise as seguintes informações:
-
Considere a conversão de objetos que usam o conjunto de caracteres
utf8mb3
para que usem o conjunto de caracteresutf8mb4
. O conjunto de caracteresutf8mb3
está obsoleto. -
Considere o uso de
utf8mb4
para referências de conjuntos de caracteres em vez deutf8
, pois, no momento,utf8
é um alias para o conjunto de caracteresutf8mb3
. Se possível, mudeutf8
parautf8mb4
primeiro e, depois, faça upgrade do banco de dados. -
Como clientes mais antigos podem receber um erro de conjunto de caracteres desconhecido para
utf8mb3
, faça upgrade dos clientes de banco de dados antes de fazer upgrade do banco de dados.
Para obter mais informações, consulte The utf8mb3 character set (3-byte UTF-8 unicode encoding)
na documentação do MySQL. Para alterar os conjuntos de caracteres, é possível executar manualmente o processo de backup, restauração e replicação do banco de dados. Ou você pode usar implantações azul/verde do Amazon RDS. Para ter mais informações, consulte Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados.
-
Quando você inicia uma atualização do MySQL 8.0 para 8.4, o Amazon RDS executa pré-verificações automaticamente para detectar essas incompatibilidades. Para obter informações sobre como atualizar para o MySQL 8.4, consulte Atualização do MySQL
Essas pré-verificações são obrigatórias. Você não pode optar por ignorá-las. As pré-verificações fornecem os seguintes benefícios:
-
Elas permitem evitar o tempo de inatividade não planejado durante a atualização.
-
Se houver incompatibilidades, o Amazon RDS impedirá a atualização e fornecerá um log para que você saiba sobre elas. Dessa forma, você poderá usar o log para preparar seu banco de dados para a atualização para o MySQL 8.4 ao reduzir essas incompatibilidades. Consulte informações detalhadas sobre como remover incompatibilidades em Preparação da instalação para atualização
na documentação do MySQL.
Pré-verificações de upgrades do MySQL 5.7 a 8.0
O MySQL 8.0 inclui várias incompatibilidades com o MySQL 5.7. Essas incompatibilidades podem causar problemas durante uma atualização do MySQL 5.7 para o MySQL 8.0. Portanto, pode ser necessária uma certa preparação no seu banco de dados para que a atualização seja bem-sucedida. Veja a seguir uma lista geral dessas incompatibilidades:
-
Não deve haver tabelas que usam funções ou tipos de dados obsoletos.
-
Não deve haver arquivos *.frm órfãos.
-
Os gatilhos não devem ter um definidor vazio ou ausente ou um contexto de criação inválido.
-
Não deve haver tabela particionada que usa um mecanismo de armazenamento que não tem suporte para particionamento nativo,
-
Não deve haver violações de palavra-chave ou palavra reservada. Algumas palavras-chave podem ser reservadas no MySQL 8.0 que não eram reservadas anteriormente.
Para obter mais informações, consulte Palavras-chave e palavras reservadas
na documentação do MySQL. -
Não deve haver tabelas no banco de dados do sistema
mysql
do MySQL 5.7 com o mesmo nome de uma tabela usada pelo dicionário de dados do MySQL 8.0. -
Não deve haver modos obsoletos do SQL definidos na configuração de variável do sistema
sql_mode
. -
Não deve haver tabelas ou procedimentos armazenados com elementos de coluna
ENUM
ouSET
individuais que excedam 255 caracteres ou 1020 bytes. -
Antes de atualizar para o MySQ 8.0.13 ou posterior, não deve haver partições de tabela que residam em espaços de tabela compartilhados do InnoDB.
-
Não deve haver consultas e definições de programa armazenadas do MySQL 8.0.12 ou anterior que usem qualificadores
ASC
ouDESC
para causasGROUP BY
. -
A instalação do MySQL 5.7 não deve usar recursos incompatíveis com o MySQL 8.0.
Para obter mais informações, consulte Recursos removidos no MySQL 8.0
na documentação do MySQL. -
Não deve haver nomes de restrição de chave externa maiores que 64 caracteres.
-
Para obter suporte aprimorado ao Unicode, revise as seguintes informações:
-
Considere a conversão de objetos que usam o conjunto de caracteres
utf8mb3
para que usem o conjunto de caracteresutf8mb4
. O conjunto de caracteresutf8mb3
está obsoleto. -
Considere o uso de
utf8mb4
para referências de conjuntos de caracteres em vez deutf8
, pois, no momento,utf8
é um alias para o conjunto de caracteresutf8mb3
. Se possível, mudeutf8
parautf8mb4
primeiro e, depois, faça upgrade do banco de dados. -
Como clientes mais antigos podem receber um erro de conjunto de caracteres desconhecido para
utf8mb3
, faça upgrade dos clientes de banco de dados antes de fazer upgrade do banco de dados.
Para obter mais informações, consulte The utf8mb3 character set (3-byte UTF-8 unicode encoding)
na documentação do MySQL. Para alterar os conjuntos de caracteres, é possível executar manualmente o processo de backup, restauração e replicação do banco de dados. Ou você pode usar implantações azul/verde do Amazon RDS. Para ter mais informações, consulte Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados.
-
Quando você inicia uma atualização do MySQL 5,7 para 8,0, o Amazon RDS executa pré-verificações automaticamente para detectar essas incompatibilidades. Para obter informações sobre como atualizar para o MySQL 8.0, consulte Upgrading MySQL (em inglês)
Essas pré-verificações são obrigatórias. Você não pode optar por ignorá-las. As pré-verificações fornecem os seguintes benefícios:
-
Elas permitem evitar o tempo de inatividade não planejado durante a atualização.
-
Se houver incompatibilidades, o Amazon RDS impedirá a atualização e fornecerá um log para que você saiba sobre elas. Dessa forma, você poderá usar o log para preparar seu banco de dados para a atualização para o MySQL 8.0 ao reduzir essas incompatibilidades. Para obter informações detalhadas sobre como remover incompatibilidades, consulte Preparing your installation for upgrade
na documentação do MySQL e Upgrading to MySQL 8.0? Here is what you need to know... no blog do MySQL Server.
Reversão após falha na atualização
Quando você atualiza uma instância de banco de dados do MySQL versão 5.7 para o MySQL versão 8.0 ou do MySQL versão 8.0 para 8.4, a atualização pode falhar. Em particular, ela pode falhar se o dicionário de dados contiver incompatibilidades que não foram capturadas pelas pré-verificações. Nesse caso, não é possível iniciar o banco de dados com sucesso na nova versão do MySQL, a 8.0 ou 8.4. Nesse ponto, o Amazon RDS reverte as alterações realizadas para a atualização. Após a reversão, a instância de banco de dados MySQL executa a versão original:
-
MySQL versão 8.0 (para uma reversão do MySQL 8.4)
-
MySQL versão 5.7 (para uma reversão do MySQL 8.0)
Quando uma atualização falha e é revertida, o Amazon RDS gera um evento com o ID de evento RDS-EVENT-0188.
Normalmente, uma atualização falha porque há incompatibilidades nos metadados entre os bancos de dados em sua instância de banco de dados e a versão de destino do MySQL. Quando uma atualização falha, você pode visualizar os detalhes sobre essas incompatibilidades no arquivo upgradeFailure.log
. Resolva as incompatibilidades antes de tentar atualizar novamente.
Durante uma tentativa de atualização e reversão malsucedidas, sua instância de banco de dados é reiniciada. Quaisquer alterações de parâmetro pendentes são aplicadas durante a reinicialização e persistem após a reversão.
Para obter mais informações sobre como atualizar para o MySQL 8.0, consulte os seguintes tópicos na documentação do MySQL:
Para obter mais informações sobre como atualizar para o MySQL 8.4, consulte Preparação da instalação para atualização