Atualizar o mecanismo de banco de dados MySQL - Amazon Relational Database Service

Atualizar o mecanismo de banco de dados MySQL

Quando o Amazon RDS oferece suporte a uma nova versão de um mecanismo de banco de dados, você pode atualizar suas instâncias de banco de dados para essa nova versão. Há dois tipos de atualizações para bancos de dados do MySQL: de versão principal e de versão secundária.

Atualizações da versão principal

As atualizações da versão principal podem conter as alterações de banco de dados incompatíveis com os aplicativos existentes. Como resultado, você deve realizar manualmente as atualizações de versões principais das suas instâncias de banco de dados. Você pode iniciar uma atualização de versão principal modificando manualmente sua instância de banco de dados. Antes de realizar uma atualização de versão principal, recomendamos seguir as instruções descritas em Atualizações da versão principal para o MySQL.

Para atualizações de versão principal das implantações de instância de banco de dados multi-AZ, o Amazon RDS atualiza simultaneamente as réplicas de espera e primária. A instância de banco de dados não estará disponível até que a atualização seja concluída. No momento, o Amazon RDS não aceita atualizações da versão principal para implantações de cluster de banco de dados multi-AZ.

dica

É possível minimizar o tempo de inatividade necessário para a atualização da versão principal utilizando uma implantação azul/verde. Para ter mais informações, consulte Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados.

Atualizações de versões secundárias

Atualizações de versões secundárias incluem somente alterações compatíveis com versões anteriores das aplicações existentes. Você pode iniciar uma atualização de versão secundária manualmente modificando sua instância de banco de dados. Ou é possível habilitar a opção Upgrade automático de versões secundárias ao criar ou modificar uma instância de banco de dados. Isso significa que o Amazon RDS atualiza automaticamente a instância de banco de dados depois de testar e aprovar a nova versão. Para obter informações sobre como realizar uma atualização, consulte Atualizar a versão de mecanismo de uma instância de banco de dados.

Quando você realiza uma atualização de versão secundária de um cluster de banco de dados multi-AZ, o Amazon RDS atualiza as instâncias de banco de dados de leitor, uma por vez. Depois, uma das instâncias de banco de dados de leitor passa a ser a nova instância de banco de dados de gravador. Depois, o Amazon RDS atualiza a antiga instância de gravador (que agora é uma instância de leitor).

nota

O tempo de inatividade da atualização de uma versão secundária de uma implantação de instância de banco de dados multi-AZ pode ser de alguns minutos. Os clusters de banco de dados multi-AZ normalmente reduzem o tempo de inatividade de atualizações de versões secundárias para aproximadamente 35 segundos. Quando usado com o RDS Proxy, é possível reduzir ainda mais o tempo de inatividade para um segundo ou menos. Para ter mais informações, consulte Usar o Amazon RDS Proxy. Como alternativa, é possível usar um proxy de banco de dados de código aberto, como ProxySQL, PgBouncer ou Driver AWS JDBC para MySQL.

Se a instância de banco de dados do MySQL usar réplicas de leitura, atualize todas as réplicas de leitura antes de atualizar a instância de origem.

Visão geral da atualização

Ao usar o AWS Management Console para atualizar uma instância de banco de dados, ele exibe os destinos de atualização válidos para a instância de banco de dados. Também é possível usar o seguinte comando da AWS CLI para identificar os destinos de atualizações válidos para uma instância de banco de dados:

Para Linux, macOS ou Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version version-number \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Para Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version version-number ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Por exemplo, para identificar os destinos de upgrades válidos para uma instância de banco de dados do MySQL versão 8.0.28, execute o seguinte comando da AWS CLI:

Para Linux, macOS ou Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.28 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Para Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.28 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

O Amazon RDS usa dois ou mais snapshots de banco de dados durante o processo de upgrade. O Amazon RDS gera até dois snapshots da instância de banco de dados antes de fazer qualquer alteração de upgrade. Se o upgrade não funcionar para seus bancos de dados, você poderá restaurar um desses snapshots para criar uma instância de banco de dados executando a versão antiga. O Amazon RDS gera outro snapshot da instância de banco de dados quando o upgrade é concluído. O Amazon RDS obtém esses snapshots independentemente de o AWS Backup gerenciar ou não os backups da instância de banco de dados.

nota

O Amazon RDS só tirará snapshot de banco de dadoss se você tiver definido o período de retenção de backup para sua instância de banco de dados como um número maior que 0. Para alterar o período de retenção de backup, consulte Modificar uma instância de banco de dados do Amazon RDS.

Após a conclusão da atualização, você não pode reverter para a versão anterior do mecanismo de banco de dados. Se quiser retornar à versão anterior, restaure o primeiro DB snapshot tirado para criar outra instância de banco de dados.

Você controla quando atualizar sua instância do banco de dados para uma nova versão compatível com o Amazon RDS. Esse nível de controle ajuda você a manter a compatibilidade com versões específicas de banco de dados e testar novas versões com seu aplicativo antes de implantá-lo na produção. Quando você estiver pronto, poderá executar as atualizações de versão quando achar melhor.

Se a instância de banco de dados usar replicação, atualize todas as réplicas de leitura antes de atualizar a instância de origem.

Números de versão do MySQL

A sequência de numeração de versões do mecanismo de banco de dados do RDS para MySQL está no formato major.minor.patch.YYYYMMDD ou major.minor.patch, por exemplo, 8.0.33.R2.20231201 ou 5.7.44. O formato usado depende da versão do mecanismo do MySQL. Consulte informações sobre a numeração de versão do Suporte estendido do RDS em Nomenclatura da versão do Suporte estendido do Amazon RDS.

principal

O número da versão principal é o número inteiro e a primeira parte fracionária do número da versão, por exemplo, 8.0. Uma atualização de versão principal aumenta a parte principal do número da versão. Por exemplo, uma atualização de 5.7.44 para 8.0.33 é uma atualização de versão principal, em que 5.7 e 8.0 são os números da versão principal.

secundária

O número da versão secundária é a terceira parte do número da versão, por exemplo, 33 em 8.0.33.

patch

O patch é a quarta parte do número da versão, por exemplo, o R2 em 8.0.33.R2. Uma versão do patch do RDS inclui correções de bugs importantes adicionadas a uma versão secundária após o lançamento.

YYYYMMDD

O patch é a quinta parte do número da versão, por exemplo, 20231201 em 8.0.33.R2.20231201. Uma versão da data do RDS é um patch de segurança que inclui correções de segurança importantes adicionadas a uma versão secundária após o lançamento. Ela não inclui nenhuma correção que possa mudar o comportamento de um mecanismo.

Versão principal Versão secundária Esquema da nomenclatura
8.0 ≥ 33 Novas instâncias de banco de dados usam major.minor.patch.YYMMDD, por exemplo, 8.0.33.R2.20231201.

As instâncias de banco de dados existentes podem usar major.minor.patch, por exemplo, 8.0.33.R2, até a próxima atualização de versão principal ou secundária.

< 33 As instâncias de banco de dados existentes usam major.minor.patch, por exemplo, 8.0.32.R2.
5.7 ≥ 42 Novas instâncias de banco de dados usam major.minor.patch.YYMMDD, por exemplo, 5.7.42.R2.20231201.

As instâncias de banco de dados existentes podem usar major.minor.patch, por exemplo, 5.7.42.R2, até a próxima atualização de versão principal ou secundária.

Número da versão do RDS

Os números de versão do RDS usam o esquema de nomenclatura major.minor.patch ou major.minor.patch.YYYYMMDD. Uma versão do patch do RDS inclui correções de bugs importantes adicionadas a uma versão secundária após o lançamento. Uma versão de data do RDS (YYMMDD) é um patch de segurança. Um patch de segurança não inclui nenhuma correção que possa mudar o comportamento do mecanismo. Consulte informações sobre a numeração de versão do Suporte estendido do RDS em Nomenclatura da versão do Suporte estendido do Amazon RDS.

Para identificar o número da versão do Amazon RDS do banco de dados, você deve primeiro criar a extensão rds_tools usando o seguinte comando:

CREATE EXTENSION rds_tools;

É possível descobrir o número da versão do RDS do banco de dados do RDS para MySQL com a seguinte consulta SQL:

mysql> select mysql.rds_version();

Por exemplo, consultar um banco de dados do RDS para MySQL 8.0.34 exibe a seguinte saída:

+---------------------+ | mysql.rds_version() | +---------------------+ | 8.0.34.R2.20231201 | +---------------------+ 1 row in set (0.01 sec)

Atualizações da versão principal para o MySQL

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.6 a MySQL 5.7

  • MySQL 5.7 a MySQL 8.0

nota

Você só pode criar instâncias de banco de dados MySQL versões 5.7 e 8.0 com classes de instância de banco de dados de última geração e da geração atual e com a classe de instância de banco de dados da geração anterior à db.m3.

Em alguns casos, você deseja atualizar uma instância de banco de dados MySQL versão 5.6 em execução em uma classe de instância de banco de dados de geração anterior (diferente de db.m3) para uma instância de banco de dados MySQL versão 5.7. 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 o mecanismo de banco de dados do MySQL versão 5.7. 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 .

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 para uma instância de banco de dados MySQL versão 5.6 no Amazon RDS para o MySQL versão 5.7 ou posterior, primeiro realize as atualizações de SO disponíveis. Após a conclusão das atualizações do sistema operacional, atualize para as versões principais: de 5.6 para 5.7 e de 5.7 para 8.0. 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 Aplicação de 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.

As atualizações para o MySQL versão 5.7 podem ser lentas

O MySQL versão 5.6.4 introduziu um novo formato de data e hora para as colunas datetime, time e timestamp, que permite componentes fracionários em valores de data e hora. Ao atualizar uma instância de banco de dados para o MySQL versão 5.7, o MySQL força a conversão de todos os tipos de colunas de data e hora no novo formato.

Como essa conversão reconstrói as tabelas, pode demorar uma quantidade considerável de tempo para concluir a atualização da instância de banco de dados. A conversão forçada ocorre para qualquer instância de banco de dados que esteja executando uma versão antes do MySQL versão 5.6.4. Ela também ocorre para qualquer instância de banco de dados que tenha sido atualizada de uma versão anterior ao MySQL versão 5.6.4 para uma versão diferente de 5.7.

Se a sua instância de banco de dados executar uma versão antes do MySQL versão 5.6.4 ou tiver sido atualizada de uma versão anterior à 5.6.4, recomendamos uma etapa extra. Nesses casos, recomendamos que você converta as colunas datetime, time e timestamp no seu banco de dados antes de atualizar sua instância de banco de dados para o MySQL versão 5.7. Essa conversão pode reduzir de forma significativa o tempo necessário para atualizar a instância de banco de dados para a MySQL versão 5.7. Para atualizar as colunas de data e hora para o novo formato, utilize o comando ALTER TABLE <table_name> FORCE; em todas as tabelas que contêm colunas de data e hora. Como alterar uma tabela a bloqueia como somente leitura, recomendamos que você realize essa atualização durante uma janela de manutenção.

Para localizar todas as tabelas no banco de dados que tenham colunas datetime, time ou timestamp e criar um comando ALTER TABLE <table_name> FORCE; para cada tabela, use a consulta a seguir.

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

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 ou SET 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 ou DESC para causas GROUP 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 suporte melhorado do Unicode, considere a conversão de objetos que usam o conjunto de caracteres utf8mb3 para que usem o conjunto de caracteres utf8mb4. O conjunto de caracteres utf8mb3 está obsoleto. Além disso, considere o uso de utf8mb4 para referências de conjuntos de caracteres em vez de utf8, pois, no momento, utf8 é um alias para o conjunto de caracteres utf8mb3.

    Para obter mais informações, consulte The utf8mb3 character set (3-byte UTF-8 unicode encoding) na documentação do MySQL.

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) na documentaçã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.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.

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.

nota

O Amazon RDS executa pré-verificações apenas para uma atualização do MySQL 5.7 para o MySQL 8.0. Para uma atualização do MySQL 5.6 para o MySQL 5.7, as pré-verificações se limitam a confirmar que não existem tabelas órfãs e que há espaço de armazenamento suficiente para reconstruir tabelas. As pré-verificações não são executadas para atualizações de versões inferiores ao MySQL 5.7.

Reversão após falha ao atualizar do MySQL 5.7 para o 8.0

Quando você atualiza uma instância de banco de dados do MySQL versão 5.7 para o MySQL versão 8.0, 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. 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 o MySQL versão 5.7. 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:

nota

Atualmente, a reversão automática após a falha de atualização é suportada apenas para atualizações das versões principais do MySQL 5.7 a 8.0.

Testar uma atualização

Antes de executar uma atualização de versão principal na sua instância de banco de dados, você deve testar completamente seu banco de dados para verificar a compatibilidade com a nova versão. Além disso, teste exaustivamente todos os aplicativos que acessam o banco de dados para compatibilidade com a nova versão. Recomendamos que você use o procedimento a seguir.

Para testar um upgrade de versão principal
  1. Reveja a documentação de upgrade para a nova versão do mecanismo de banco de dados para ver se existem problemas de compatibilidade que podem afetar seu banco de dados ou seus aplicativos:

  2. Se a sua instância de banco de dados for um membro de um grupo de parâmetros de banco de dados personalizado, crie um novo grupo de parâmetros de banco de dados com as configurações existentes que seja compatível com a nova versão principal. Especifique o novo grupo de parâmetros de banco de dados quando você atualizar sua instância de teste, de modo que seu teste de atualização garanta que ela funcione corretamente. Para obter mais informações sobre como criar um parameter group de banco de dados, consulte Trabalhar com grupos de parâmetros.

  3. Crie um snapshot de banco de dados da instância de banco de dados a ser atualizada. Para ter mais informações, consulte Criar um snapshot de banco de dados para uma instância de banco de dados de uma única zona de disponibilidade.

  4. Restaure o snapshot de banco de dados para criar uma nova instância de banco de dados de teste. Para obter mais informações, consulte Restaurar a partir de um snapshot do de banco de dados.

  5. Modifique essa nova instância de banco de dados de teste para atualizá-la para a nova versão, usando um dos métodos detalhados a seguir. Se você criou um novo parameter group na etapa 2, especifique-o.

  6. Avalie o armazenamento usado pela instância atualizada para determinar se o upgrade requer armazenamento adicional.

  7. Execute quantos testes de garantia de qualidade na instância de banco de dados atualizada forem necessários para garantir que o seu banco de dados e o seu aplicativo funcionem corretamente com a nova versão. Implemente os novos testes necessários para avaliar o impacto de problemas de compatibilidade que você identificou na etapa 1. Teste todos os procedimentos armazenados e funções. Direcione versões de teste dos seus aplicativos à instância de banco de dados atualizada.

  8. Se todos os testes forem aprovados, realize o upgrade na sua instância de banco de dados de produção. Recomendamos que você não permita operações de gravação na instância de banco de dados até confirmar que tudo está funcionando corretamente.

Atualizar uma instância de banco de dados MySQL

Para obter informações sobre como atualizar manual ou automaticamente uma instância de banco de dados MySQL, consulte Atualizar a versão de mecanismo de uma instância de banco de dados.

Atualizações da versão secundária automáticas para o MySQL

Se você especificar as seguintes configurações ao criar ou modificar uma instância de banco de dados, poderá fazer com que sua instância de banco de dados seja atualizada automaticamente.

  • A configuração Auto minor version upgrade (Atualização automática de versão secundária) está habilitada.

  • A configuração Backup retention period (Período de retenção de backup) é maior que 0.

No AWS Management Console, essas configurações estão em Additional configuration (Configuração adicional). A imagem a seguir mostra a configuração Auto minor version upgrade (Atualização automática para versão secundária).


                Auto minor version upgrade (Atualização automática para versão secundária)

Para ter mais informações sobre essas configurações, consulte Configurações para instâncias de banco de dados.

Para algumas versões principais do RDS para MySQL em algumas Regiões da AWS, uma versão secundária é designada pelo RDS como a versão de atualização automática. Depois que uma versão secundária foi testada e aprovada pelo Amazon RDS, a atualização de versão secundária ocorre automaticamente durante a janela de manutenção. O RDS não define automaticamente versões secundárias lançadas mais recentemente como a versão de atualização automática. Antes de o RDS designar uma versão de atualização automática, diversos critérios são considerados, como estes:

  • Problemas de segurança conhecidos

  • Bugs na versão da comunidade do MySQL

  • Estabilidade geral de frota desde que a versão secundária foi lançada.

É possível utilizar o comando da AWS CLI a seguir para determinar a versão atual secundária de destino de atualização automática para uma versão secundária do MySQL especificada em uma Região da AWS específica.

Para Linux, macOS ou Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version minor-version \ --region region \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output text

Para Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version minor-version ^ --region region ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output text

Por exemplo, o comando da AWS CLI a seguir determina o destino de atualização secundária automática para a versão 8.0.11 secundária do MySQL na Região da AWS Leste dos EUA (Ohio) (us-east-2).

Para Linux, macOS ou Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.11 \ --region us-east-2 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output table

Para Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.11 ^ --region us-east-2 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output table

A saída é semelhante à seguinte.

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | False | 8.0.15 | | False | 8.0.16 | | False | 8.0.17 | | False | 8.0.19 | | False | 8.0.20 | | False | 8.0.21 | | True | 8.0.23 | | False | 8.0.25 | +--------------+-----------------+

Neste exemplo, o valor de AutoUpgrade é True para o MySQL versão 8.0.23. Portanto, o destino de upgrade secundário automático é o MySQL versão 8.0.23, que está realçado na saída.

Uma instância de banco de dados MySQL é atualizada automaticamente durante a janela de manutenção, caso os seguintes critérios sejam atendidos:

  • A configuração Auto minor version upgrade (Atualização automática de versão secundária) está habilitada.

  • A configuração Backup retention period (Período de retenção de backup) é maior que 0.

  • A instância de banco de dados está executando uma versão de mecanismo de banco de dados secundária que é menor que a versão secundária de atualização automática.

Para obter mais informações, consulte Atualizar automaticamente a versão do mecanismo espelho.

Usando uma réplica de leitura para reduzir o tempo de inatividade ao atualizar um banco de dados MySQL

Na maioria dos casos, uma implantação azul/verde é a melhor opção para reduzir o tempo de inatividade ao atualizar uma instância de banco de dados MySQL. Para ter mais informações, consulte Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados.

Se não for possível usar uma implantação azul/verde e se sua instância de banco de dados MySQL estiver em uso com uma aplicação de produção, você poderá usar o procedimento a seguir para atualizar a versão de banco de dados da sua instância de banco de dados. Esse procedimento pode reduzir o tempo de inatividade do seu aplicativo.

Usando uma réplica de leitura, você pode executar a maioria das etapas de manutenção antes do tempo e minimizar as alterações necessárias durante a interrupção real. Com essa técnica, você pode testar e preparar a nova instância de banco de dados sem fazer alterações em sua instância de banco de dados existente.

O procedimento a seguir mostra um exemplo de atualização do MySQL versão 5.7 para o MySQL versão 8.0. Você pode usar as mesmas etapas gerais nas atualizações para outras versões principais.

nota

Quando você estiver atualizando do MySQL versão 5.7 para o MySQL versão 8.0, conclua as pré-verificações antes de executar a atualização. Para ter mais informações, consulte Pré-verificações de upgrades do MySQL 5.7 a 8.0.

Como atualizar um banco de dados MySQL enquanto uma instância de banco de dados está em uso
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. Crie uma réplica de leitura da instância de banco de dados MySQL 5.7. Esse processo cria uma cópia atualizável do seu banco de dados. Outras réplicas de leitura da instância de banco de dados também podem existir.

    1. No console, escolha Databases (Bancos de dados) e depois escolha a instância de banco de dados que você deseja atualizar.

    2. Em Actions (Ações), escolha Create read replica (Criar réplica de leitura).

    3. Forneça o valor do DB instance identifier (Identificador de instância de banco de dados) para a réplica de leitura e verifique se a DB instance class (Classe da instância de banco de dados) e as outras configurações correspondem à instância de banco de dados MySQL 5.7.

    4. Escolha Create read replica (Criar réplica de leitura).

  3. (Opcional) Quando a réplica de leitura for criada e Status for exibida Available (Disponível), converta a réplica de leitura em uma implantação multi-AZ e ative backups.

    Por padrão, uma réplica de leitura é criada como uma implantação single-AZ com backups desativados. Como a réplica de leitura se torna a instância de banco de dados de produção, uma prática recomendada é configurar uma implantação multi-AZ e habilitar backups agora.

    1. No console, selecione Databases (Bancos de dados) e a réplica de leitura que você acabou de criar.

    2. Selecione Modify.

    3. Para Multi-AZ deployment (Implantação multi-AZ), escolha Create a standby instance (Criar uma instância em espera).

    4. Em Backup Retention Period (Período de retenção de backup), escolha um valor positivo diferente de zero, como 3 dias, depois selecione Continue (Continuar).

    5. Em Scheduling of modifications (Programação de modificações), selecione Apply immediately (Aplicar imediatamente).

    6. Selecione Modify DB instance (Modificar instância de banco de dados).

  4. Quando o Status da réplica de leitura mostrar Available (Disponível), atualize a réplica de leitura para o MySQL 8.0:

    1. No console, selecione Databases (Bancos de dados) e a réplica de leitura que você acabou de criar.

    2. Selecione Modify.

    3. Em DB engine version (Versão do mecanismo de banco de dados), selecione a versão do MySQL 8.0 para a qual atualizar e, em seguida, selecione Continue (Continuar).

    4. Em Scheduling of modifications (Programação de modificações), selecione Apply immediately (Aplicar imediatamente).

    5. Selecione Modify DB instance (Modificar instância de banco de dados) para iniciar a atualização.

  5. Quando a atualização for concluída e o Status mostrar Disponível, verifique se a réplica de leitura foi atualizada com a instância de banco de dados MySQL 5.7 de origem. Para verificar, conecte-se à réplica de leitura e execute o comando SHOW REPLICA STATUS. Se o campo Seconds_Behind_Master for 0, a replicação está atualizada.

    nota

    As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

  6. (Opcional) Crie uma réplica de leitura da réplica de leitura.

    Se você quiser que a instância de banco de dados tenha uma réplica de leitura depois que ela for promovida para uma instância de banco de dados autônoma, você pode criar a réplica de leitura agora.

    1. No console, selecione Databases (Bancos de dados) e selecione a réplica de leitura que você acabou de atualizar.

    2. Em Actions (Ações), escolha Create read replica (Criar réplica de leitura).

    3. Forneça o valor do DB instance identifier (Identificador de instância de banco de dados) para a réplica de leitura e verifique se a DB instance class (Classe da instância de banco de dados) e as outras configurações correspondem à instância de banco de dados MySQL 5.7.

    4. Escolha Create read replica (Criar réplica de leitura).

  7. (Opcional) Configure um grupo de parâmetros de banco de dados personalizado para a réplica de leitura.

    Se você quiser que a instância de banco de dados use um grupo de parâmetros personalizado depois de ser promovida para uma instância de banco de dados autônoma, poderá criar o grupo de parâmetros de banco de dados agora pode associá-lo à réplica de leitura.

    1. Crie um grupo de parâmetros de banco de dados personalizado para o MySQL 8.0. Para obter instruções, consulte Criar um grupo de parâmetros de banco de dados.

    2. Modifique os parâmetros que você deseja alterar no grupo de parâmetros de banco de dados que você acabou de criar. Para obter instruções, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados.

    3. No console, selecione Databases (Bancos de dados) e a réplica de leitura.

    4. Selecione Modify.

    5. Para o DB parameter group (Grupo de parâmetros do banco de dados), escolha o grupo de parâmetros do banco de dados MySQL 8.0 que você acabou de criar e, em seguida, escolha Continue (Continuar).

    6. Em Scheduling of modifications (Programação de modificações), selecione Apply immediately (Aplicar imediatamente).

    7. Selecione Modify DB instance (Modificar instância de banco de dados) para iniciar a atualização.

  8. Torne sua réplica de leitura MySQL 8.0 uma instância de banco de dados autônoma.

    Importante

    Quando você promove a réplica de leitura do MySQL 8.0 para uma instância de banco de dados autônoma, ela deixa de ser uma réplica da instância de banco de dados MySQL 5.7. Recomendamos que você promova a replica de leitura do MySQL 8.0 durante uma janela de manutenção, quando a instância de banco de dados MySQL 5.7 estiver no modo somente leitura e todas as operações de gravação estiverem suspensas. Quando a promoção terminar, você poderá direcionar suas operações de gravação para a instância de banco de dados MySQL 8.0 atualizada, para garantir que nenhuma operação de gravação seja perdida.

    Além disso, recomendamos que, antes de promover a réplica de leitura do MySQL 8.0, você realize todas as operações de DDL (linguagem de definição de dados) necessárias na réplica de leitura do MySQL 8.0. Um exemplo é a criação de índices. Essa abordagem evita efeitos negativos sobre a performance da réplica de leitura do MySQL 8.0 após a sua promoção. Para promover uma réplica de leitura, use o procedimento a seguir.

    1. No console, selecione Databases (Bancos de dados) e selecione a réplica de leitura que você acabou de atualizar.

    2. Em Actions (Ações), selecione Promote (Promover).

    3. Selecione Yes (Sim) para habilitar backups automatizados da instância da réplica de leitura. Para obter mais informações, consulte Introdução aos backups.

    4. Escolha Continue.

    5. Escolha Promote Read Replica (Promover réplica de leitura).

  9. Agora, você possui uma versão atualizada do seu banco de dados MySQL. Neste ponto, você pode direcionar as aplicações para a nova instância de banco de dados MySQL 8.0.