

# Atualizações do mecanismo de banco de dados do RDS para MySQL
<a name="USER_UpgradeDBInstance.MySQL"></a>

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 de 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 do RDS para MySQL](USER_UpgradeDBInstance.MySQL.Major.md).  
Para atualizações de versão principal das implantações de instância de banco de dados multi-AZ, o Amazon RDS faz upgrade simultaneamente das 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. Para upgrades de versão principal das implantações de cluster de banco de dados multi-AZ, o Amazon RDS faz upgrade das instâncias membro do cluster uma por vez.  
É possível minimizar o tempo de inatividade necessário para a atualização da versão principal utilizando uma implantação azul/verde. Para obter mais informações, consulte [Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados](blue-green-deployments.md).

**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 ](USER_UpgradeDBInstance.Upgrading.md).  
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).  
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 obter mais informações, consulte [Amazon RDS Proxy](rds-proxy.md). Como alternativa, é possível usar um proxy de banco de dados de código aberto, como [ProxySQL](https://aws.amazon.com/blogs/database/achieve-one-second-or-less-of-downtime-with-proxysql-when-upgrading-amazon-rds-multi-az-deployments-with-two-readable-standbys/), [PgBouncer](https://aws.amazon.com/blogs/database/fast-switchovers-with-pgbouncer-on-amazon-rds-multi-az-deployments-with-two-readable-standbys-for-postgresql/) ou [driver avançado de encapsulamento JDBC da AWS](https://aws.amazon.com/blogs/database/achieve-one-second-or-less-downtime-with-the-advanced-jdbc-wrapper-driver-when-upgrading-amazon-rds-multi-az-db-clusters/).

O Amazon RDS também comporta a política de implementação de atualizações para gerenciar atualizações automáticas de versões secundárias em vários recursos de banco de dados e Contas da AWS. Para obter mais informações, consulte [Usar a política de implementação de atualização do AWS Organizations para atualizações automáticas de versões secundárias](RDS.Maintenance.AMVU.UpgradeRollout.md).

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.

**Topics**
+ [

## Considerações sobre as atualizações do MySQL
](#USER_UpgradeDBInstance.MySQL.Considerations)
+ [

## Encontrar destinos de atualização válidos
](#USER_UpgradeDBInstance.MySQL.FindingTargets)
+ [

# Números de versão do MySQL
](USER_UpgradeDBInstance.MySQL.VersionID.md)
+ [

# Números de versão do RDS no RDS para MySQL
](USER_UpgradeDBInstance.MySQL.rds.version.md)
+ [

# Atualizações da versão principal do RDS para MySQL
](USER_UpgradeDBInstance.MySQL.Major.md)
+ [

# Testar uma atualização do RDS para MySQL
](USER_UpgradeDBInstance.MySQL.UpgradeTesting.md)
+ [

## Atualizar uma instância de banco de dados MySQL
](#USER_UpgradeDBInstance.MySQL.Upgrading)
+ [

# Atualizações automáticas da versão secundária do RDS para MySQL
](USER_UpgradeDBInstance.MySQL.Minor.md)
+ [

# Usar uma réplica de leitura para reduzir o tempo de inatividade ao atualizar um banco de dados do RDS para MySQL
](USER_UpgradeDBInstance.MySQL.ReducedDowntime.md)
+ [

# Monitorar atualizações do mecanismo do RDS para MySQL com eventos
](USER_UpgradeDBInstance.MySQL.Monitoring.md)

## Considerações sobre as atualizações do MySQL
<a name="USER_UpgradeDBInstance.MySQL.Considerations"></a>

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](Overview.DBInstance.Modifying.md). 

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.

## Encontrar destinos de atualização válidos
<a name="USER_UpgradeDBInstance.MySQL.FindingTargets"></a>

Ao usar o Console de gerenciamento da AWS 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 executar 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
```

# Números de versão do MySQL
<a name="USER_UpgradeDBInstance.MySQL.VersionID"></a>

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](extended-support-versions.md#extended-support-naming).

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

A tabela a seguir explica o esquema de nomenclatura do RDS para MySQL versão 8.4.


| Versão secundária 8.4 | Esquema da nomenclatura | 
| --- | --- | 
|  ≥ 3  |  Novas instâncias de banco de dados usam *major.minor.patch.YYMMDD*, por exemplo, 8.4.3.R2.20241201. As instâncias de banco de dados existentes podem usar *major.minor.patch*, por exemplo, 8.4.3.R2, até a próxima atualização de versão principal ou secundária. | 

A tabela a seguir explica o esquema de nomenclatura do RDS para MySQL versão 8.0. 


| 8.0 versão secundária | Esquema da nomenclatura | 
| --- | --- | 
|  ≥ 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.  | 

A tabela a seguir explica o esquema de nomenclatura do RDS para MySQL versão 5.7.


| 5.7 versão secundária | Esquema da nomenclatura | 
| --- | --- | 
|  ≥ 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úmeros de versão do RDS no RDS para MySQL
<a name="USER_UpgradeDBInstance.MySQL.rds.version"></a>

Os números de versão do RDS usam o esquema de nomenclatura `major.minor.patch` ou `major.minor.patch.YYYYMMDD`. As versões do Suporte estendido do Amazon RDS usam o esquema de nomenclatura de versões secundárias *minor-RDS.AAAAMMDD*.

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 (*AAAAMMDD*) é 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](extended-support-versions.md#extended-support-naming).

É 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 do RDS para MySQL
<a name="USER_UpgradeDBInstance.MySQL.Major"></a>

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âncias de banco de dados do ](Concepts.DBInstanceClass.md).

**Topics**
+ [

## Visão geral de atualizações de versões principais do MySQL
](#USER_UpgradeDBInstance.MySQL.Major.Overview)
+ [

## Pré-verificações de atualizações
](#USER_UpgradeDBInstance.MySQL.Prechecks)
+ [

## Reversão após falha na atualização
](#USER_UpgradeDBInstance.MySQL.Major.RollbackAfterFailure)

## Visão geral de atualizações de versões principais do MySQL
<a name="USER_UpgradeDBInstance.MySQL.Major.Overview"></a>

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](multi-az-db-clusters-upgrading.md). 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ânciade banco de dados](USER_UpgradeDBInstance.Maintenance.md#USER_UpgradeDBInstance.OSUpgrades). 

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](CHAP_BestPractices.md). 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](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) e verifique o valor de `Status`. 

## Pré-verificações de atualizações
<a name="USER_UpgradeDBInstance.MySQL.Prechecks"></a>

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](https://dev.mysql.com/doc/mysql-shell/8.4/en/mysql-shell-utilities-upgrade.html).

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](USER_Events.md).

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](USER_LogAccess.Procedural.Viewing.md).

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.

**Topics**
+ [

### Pré-verificações de atualizações do MySQL 8.0 para 8.4
](#USER_UpgradeDBInstance.MySQL.80to84Prechecks)
+ [

### Pré-verificações de upgrades do MySQL 5.7 a 8.0
](#USER_UpgradeDBInstance.MySQL.57to80Prechecks)

### Pré-verificações de atualizações do MySQL 8.0 para 8.4
<a name="USER_UpgradeDBInstance.MySQL.80to84Prechecks"></a>

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](https://dev.mysql.com/doc/refman/8.4/en/keywords.html) 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` ou `SET` 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](https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html#mysql-nutshell-removals) 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 caracteres `utf8mb4`. O conjunto de caracteres `utf8mb3` está obsoleto.
  + 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`. Se possível, mude `utf8` para `utf8mb4` 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)](https://dev.mysql.com/doc/refman/8.4/en/charset-unicode-utf8mb3.html) 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 obter mais informações, consulte [Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados](blue-green-deployments.md).

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](https://dev.mysql.com/doc/refman/8.4/en/upgrading.html) 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.4 ao reduzir essas incompatibilidades. Consulte informações detalhadas sobre como remover incompatibilidades em [Preparação da instalação para atualização](https://dev.mysql.com/doc/refman/8.4/en/upgrade-prerequisites.html) na documentação do MySQL.

### Pré-verificações de upgrades do MySQL 5.7 a 8.0
<a name="USER_UpgradeDBInstance.MySQL.57to80Prechecks"></a>

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 \$1.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](https://dev.mysql.com/doc/refman/8.0/en/keywords.html) 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](https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-removals) 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 caracteres `utf8mb4`. O conjunto de caracteres `utf8mb3` está obsoleto.
  + 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`. Se possível, mude `utf8` para `utf8mb4` 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)](https://dev.mysql.com/doc/refman/8.4/en/charset-unicode-utf8mb3.html) 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 obter mais informações, consulte [Usar implantações azul/verde do Amazon RDS para atualizações de banco de dados](blue-green-deployments.md).

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)](https://dev.mysql.com/doc/refman/8.0/en/upgrading.html) 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](https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html) na documentação do MySQL e [Upgrading to MySQL 8.0? Here is what you need to know...](https://dev.mysql.com/blog-archive/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
<a name="USER_UpgradeDBInstance.MySQL.Major.RollbackAfterFailure"></a>

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:
+ [ Preparing Your Installation for Upgrade](https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html)
+ [ Upgrading to MySQL 8.0? Here is what you need to know…](https://dev.mysql.com/blog-archive/upgrading-to-mysql-8-0-here-is-what-you-need-to-know/)

Para obter mais informações sobre como atualizar para o MySQL 8.4, consulte [Preparação da instalação para atualização](https://dev.mysql.com/doc/refman/8.4/en/upgrade-prerequisites.html) na documentação do MySQL.

# Testar uma atualização do RDS para MySQL
<a name="USER_UpgradeDBInstance.MySQL.UpgradeTesting"></a>

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: 
   +  [Alterações feitas no MySQL 5.7](http://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html) 
   +  [Alterações feitas no MySQL 8.0](http://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html) 
   + [Alterações feitas no MySQL 8.4](http://dev.mysql.com/doc/refman/8.4/en/upgrading-from-previous-series.html) 

1. 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 [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md). 

1. 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 single-AZ para o Amazon RDS](USER_CreateSnapshot.md). 

1. 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 uma instância de banco de dados](USER_RestoreFromSnapshot.md). 

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

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

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

1. 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
<a name="USER_UpgradeDBInstance.MySQL.Upgrading"></a>

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 ](USER_UpgradeDBInstance.Upgrading.md).

# Atualizações automáticas da versão secundária do RDS para MySQL
<a name="USER_UpgradeDBInstance.MySQL.Minor"></a>

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 Console de gerenciamento da AWS, 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).

![\[A seção Manutenção com Habilitar atualização automática de versão secundária selecionada no console do Amazon RDS.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/amvu.png)


Para ter mais informações sobre essas configurações, consulte [Configurações para instâncias de banco de dados](USER_ModifyInstance.Settings.md).

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 executar 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](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades). 

# Usar uma réplica de leitura para reduzir o tempo de inatividade ao atualizar um banco de dados do RDS para MySQL
<a name="USER_UpgradeDBInstance.MySQL.ReducedDowntime"></a>

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](blue-green-deployments.md). 

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. 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 ou do MySQL versão 8.0 para o MySQL versão 8.4, 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](USER_UpgradeDBInstance.MySQL.Major.md#USER_UpgradeDBInstance.MySQL.57to80Prechecks) e [Pré-verificações de atualizações do MySQL 8.0 para 8.4](USER_UpgradeDBInstance.MySQL.Major.md#USER_UpgradeDBInstance.MySQL.80to84Prechecks).

**Como atualizar um banco de dados MySQL enquanto uma instância de banco de dados está em uso**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

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

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

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

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

1. (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 com backups desabilitados. 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.

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

   1. Selecione **Modify**.

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

   1. 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).

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

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

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

   1. Selecione **Modify**.

   1. 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)**.

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

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

1. 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`. 

1. (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.

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

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

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

1. (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 no Amazon RDS](USER_WorkingWithParamGroups.Creating.md).

   1. 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 no Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

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

   1. Selecione **Modify**.

   1. 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)**.

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

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

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

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

   1. 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](USER_WorkingWithAutomatedBackups.md).

   1. Escolha **Continue**.

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

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

# Monitorar atualizações do mecanismo do RDS para MySQL com eventos
<a name="USER_UpgradeDBInstance.MySQL.Monitoring"></a>

Quando você atualiza a versão do mecanismo de um banco de dados do RDS para MySQL, o Amazon RDS emite um evento específico durante cada fase do processo. Para acompanhar o progresso de uma atualização, você pode visualizar ou assinar esses eventos.

 Para acessar mais informações sobre eventos do RDS, consulte [Monitorar eventos do Amazon RDS](working-with-events.md).

Para acessar informações detalhadas sobre um evento específico do Amazon RDS ocorrido durante a atualização do seu mecanismo, consulte [Categorias de eventos e mensagens de eventos ](USER_Events.Messages.md).