

# Práticas recomendadas para implantações azul/verde do Amazon RDS
<a name="blue-green-deployments-best-practices"></a>

Veja as práticas recomendadas para implantações azul/verde.

**Topics**
+ [Práticas recomendadas gerais para implantações azuis/verdes](#blue-green-deployments-best-practices-general)
+ [Práticas recomendadas do RDS para MySQL para implantações azuis/verdes](#blue-green-deployments-best-practices-mysql)
+ [Práticas recomendadas do RDS para MySQL para implantações azul/verde.](#blue-green-deployments-best-practices-agd)
+ [Métodos de replicação do PostgreSQL em implantações azuis/verdes](blue-green-deployments-replication-type.md)

## Práticas recomendadas gerais para implantações azuis/verdes
<a name="blue-green-deployments-best-practices-general"></a>

Considere as seguintes práticas recomendadas gerais ao criar uma implantação azul/verde.
+ Teste minuciosamente as instâncias de banco de dados no ambiente verde antes da transição.
+ Mantenha seus bancos de dados no ambiente verde somente leitura. Recomendamos que você habilite as operações de gravação no ambiente verde com cuidado, pois elas podem causar conflitos de replicação. Elas também podem ocasionar dados não intencionais nos bancos de dados de produção após a transição.
+ Se você usar uma implantação azul/verde para implementar alterações de esquema, faça somente alterações compatíveis com a replicação.

  Por exemplo, é possível adicionar novas colunas ao final de uma tabela sem interromper a replicação da implantação azul para a implantação verde. No entanto, alterações de esquema, como renomear colunas ou renomear tabelas, transformam a replicação na implantação verde.

  Para ter mais informações sobre alterações compatíveis com replicação, consulte [Replicação com diferentes definições de tabela na origem e na réplica](https://dev.mysql.com/doc/refman/8.0/en/replication-features-differing-tables.html) na documentação do MySQL e [Restrições](https://www.postgresql.org/docs/current/logical-replication-restrictions.html) na documentação de replicação lógica do PostgreSQL.
**nota**  
Essa limitação não se aplica às implantações azuis/verdes do RDS para PostgreSQL que usam replicação física. Para obter mais informações, consulte [Limitações do RDS para PostgreSQL para implantações azuis/verdes com replicação física](blue-green-deployments-considerations.md#blue-green-deployments-limitations-postgres-physical).
+ Depois de criar a implantação azul/verde, manipule o carregamento lento, se necessário. O carregamento de dados deve ser concluído antes da transição. Para ter mais informações, consulte [Carregamento lento e inicialização de armazenamento para implantações azuis/verdes](blue-green-deployments-creating.md#blue-green-deployments-creating-lazy-loading).
+ Ao realizar a transição de uma implantação azul/verde, siga as práticas recomendadas de transição. Para obter mais informações, consulte [Práticas recomendadas de transição](blue-green-deployments-switching.md#blue-green-deployments-switching-best-practices).

## Práticas recomendadas do RDS para MySQL para implantações azuis/verdes
<a name="blue-green-deployments-best-practices-mysql"></a>

Considere as seguintes práticas recomendadas ao criar uma implantação azul/verde em uma instância de banco de dados do RDS para MySQL.
+ Evite usar mecanismos de armazenamento não transacionais, como o MyISAM, que não são otimizados para replicação.
+ Otimize as réplicas de leitura e o ambiente verde para replicação de logs binários. Se compatível com o mecanismo de banco de dados, habilite as replicações GTID, paralela e à prova de falhas para garantir consistência e durabilidade dos dados antes de criar a implantação azul/verde. Para obter mais informações, consulte [Usar a replicação baseada em GTID](mysql-replication-gtid.md).
+ Se o ambiente verde apresentar atraso na réplica, pense no seguinte:
  + Defina o parâmetro `innodb_flush_log_at_trx_commit` temporariamente como `2` no grupo de parâmetros verde do banco de dados. Depois de atualizar a replicação, faça a reversão para o valor padrão de `1` antes da transição. Se ocorrer um desligamento inesperado ou uma falha com os valores dos parâmetros temporários, compile o ambiente verde novamente para evitar que nenhuma corrupção de dados passe despercebida. 
  + Para reduzir a latência de gravação e melhorar o throughput da replicação, altere temporariamente as instâncias verdes de banco de dados multi-AZ para instâncias de banco de dados single-AZ. Reabilite a multi-AZ logo antes da transição.

## Práticas recomendadas do RDS para MySQL para implantações azul/verde.
<a name="blue-green-deployments-best-practices-agd"></a>

Além das práticas recomendadas gerais e específicas do mecanismo listadas acima, pense nas práticas recomendadas a seguir para a instância de banco de dados do RDS para MySQL.
+ Monitore as seguintes métricas do CloudWatch para identificar períodos de baixa atividade em seu ambiente de produção:
  + `DatabaseConnections`
  + `ActiveTransactions`

  Programe a transição entre azul e verde durante a janela de manutenção planejada ou durante um período de baixa atividade.
+ A duração da transição entre azul e verde varia de acordo com sua workload e o número de regiões secundárias. Quando você inicia uma transição entre azul e verde, o serviço espera que o atraso da réplica chegue a zero antes de continuar. Recomendamos conferir o atraso da réplica antes de iniciar a transição.
+ Se você pretende usar um parâmetro de banco de dados ou um grupo de parâmetros de cluster de banco de dados diferente do padrão para seu ambiente verde, crie o grupo de parâmetros desejado com o mesmo nome em todas as regiões secundárias antes de iniciar a implantação azul/verde.

### Práticas recomendadas do RDS para PostgreSQL para implantações azuis/verdes
<a name="blue-green-deployments-best-practices-postgres"></a>

Considere as seguintes práticas recomendadas ao criar uma implantação azul/verde em uma instância de banco de dados do RDS para PostgreSQL.

**Topics**
+ [Práticas recomendadas gerais do RDS para PostgreSQL para implantações azuis/verdes](#blue-green-deployments-best-practices-postgres-general)
+ [Práticas recomendadas do RDS para PostgreSQL para implantações azuis/verdes com replicação física](#blue-green-deployments-best-practices-postgres-physical)
+ [Práticas recomendadas do RDS para PostgreSQL para implantações azuis/verdes com replicação lógica](#blue-green-deployments-best-practices-postgres-logical)

#### Práticas recomendadas gerais do RDS para PostgreSQL para implantações azuis/verdes
<a name="blue-green-deployments-best-practices-postgres-general"></a>

Considere as seguintes práticas recomendadas gerais ao criar uma implantação azul/verde em uma instância de banco de dados do RDS para PostgreSQL.
+ Atualize todas as extensões do PostgreSQL para a versão mais recente antes de criar uma implantação azul/verde. Para obter mais informações, consulte [Atualizar extensões do PostgreSQL em bancos de dados do RDS para PostgreSQL](USER_UpgradeDBInstance.PostgreSQL.ExtensionUpgrades.md).
+ Transações de longa duração podem causar um atraso significativo na réplica. Para reduzir o atraso na réplica, pense no seguinte:
  + Reduza as transações de longa duração que podem ser adiadas até que o ambiente verde alcance o ambiente azul.
  + Reduza as operações em massa no ambiente azul até que o ambiente verde alcance o ambiente azul.
  + Inicie uma operação manual de congelamento de vacuum em tabelas ocupadas antes de criar a implantação azul/verde.
  + Em relação ao PostgreSQL versão 12 e posterior, desabilite o parâmetro `index_cleanup` em tabelas grandes ou ocupadas para aumentar a taxa de manutenção normal em bancos de dados azuis. Para obter mais informações, consulte [Aspirar uma tabela o mais rápido possível](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.Executing).
**nota**  
Ignorar regularmente a limpeza do índice durante a aspiração pode causar inchaço no índice, o que pode prejudicar o desempenho da limpeza. Como prática recomendada, utilize essa abordagem somente ao usar uma implantação azul/verde. Depois que a implantação estiver concluída, recomendamos retomar a manutenção e a limpeza regulares do índice.
+ A replicação lenta pode fazer com que remetentes e destinatários sejam reiniciados com frequência, o que atrasa a sincronização. Para garantir que eles permaneçam ativos, desabilite os tempos limite definindo o parâmetro `wal_sender_timeout` como `0` no ambiente azul e o parâmetro `wal_receiver_timeout` como `0` no ambiente verde.
+ Para evitar que segmentos de log de gravação antecipada (WAL) sejam removidos do ambiente azul, defina o parâmetro `wal_keep_segments` como 15625 para o PostgreSQL versão 13 e anterior. Para a versão 14 e posterior, defina o parâmetro `wal_keep_size` como 1 TiB, se houver espaço de armazenamento livre suficiente.

#### Práticas recomendadas do RDS para PostgreSQL para implantações azuis/verdes com replicação física
<a name="blue-green-deployments-best-practices-postgres-physical"></a>

Com a replicação física, o Amazon RDS cria uma réplica de leitura da instância de banco de dados de origem. Para parâmetros relacionados, monitoramento, ajuste e solução de problemas, consulte [Trabalhar com réplicas de leitura do Amazon RDS para PostgreSQL](USER_PostgreSQL.Replication.ReadReplicas.md).

Para obter uma explicação de quando as implantações azuis/verdes usam a replicação física em vez da replicação lógica, consulte [Métodos de replicação do PostgreSQL em implantações azuis/verdes](blue-green-deployments-replication-type.md).

#### Práticas recomendadas do RDS para PostgreSQL para implantações azuis/verdes com replicação lógica
<a name="blue-green-deployments-best-practices-postgres-logical"></a>

Considere as seguintes práticas recomendadas ao criar uma implantação azul/verde que usa replicação lógica. Para obter uma explicação de quando as implantações azuis/verdes usam a replicação lógica em vez da replicação física, consulte [Métodos de replicação do PostgreSQL em implantações azuis/verdes](blue-green-deployments-replication-type.md).
+ Se o banco de dados tiver memória livre suficiente, aumente o valor do parâmetro de banco de dados `logical_decoding_work_mem` no ambiente azul. Isso permite menos decodificação no disco e uso da memória. Para obter mais informações, consulte a [Documentação do PostgreSQL](https://www.postgresql.org/docs/13/runtime-config-resource.html#GUC-LOGICAL-DECODING-WORK-MEM).
  + É possível monitorar o estouro de transações que está sendo gravado em disco usando a métrica `ReplicationSlotDiskUsage` do CloudWatch. Essa métrica oferece insights sobre o uso do espaço em disco por slots de replicação, ajudando a identificar quando os dados da transação excedem a capacidade de memória e são armazenados em disco. Você pode monitorar a memória livre com a métrica do `FreeableMemory` do CloudWatch. Para obter mais informações, consulte [Métricas específicas da instância do Amazon CloudWatch para Amazon RDS](rds-metrics.md#rds-cw-metrics-instance).
  + No RDS para PostgreSQL versão 14 e posterior, é possível monitorar o tamanho dos arquivos de estouro lógico usando a visualização `[pg\$1stat\$1replication\$1slots](https://www.postgresql.org/docs/14/monitoring-stats.html#MONITORING-PG-STAT-REPLICATION-SLOTS-VIEW)` do sistema.
+ Se você estiver usando a extensão `aws_s3`, conceda à instância de banco de dados verde acesso ao Amazon S3 por meio de um perfil do IAM após a criação do ambiente verde. Isso permite que os comandos de importação e exportação continuem funcionando após a transição. Para instruções, consulte [Configurar o acesso a um bucket do Amazon S3](postgresql-s3-export-access-bucket.md).
+ Analise o desempenho das instruções UPDATE e DELETE e avalie se a criação de um índice na coluna utilizada na cláusula WHERE pode otimizar essas consultas. Isso pode melhorar o desempenho quando as operações são repetidas no ambiente verde.
+ Se você estiver usando gatilhos, garanta que eles não interfiram na criação, atualização e eliminação de objetos `pg_catalog.pg_publication`, `pg_catalog.pg_subscription` e `pg_catalog.pg_replication_slots` cujos nomes comecem com “rds”.
+ Se você especificar uma versão posterior do mecanismo para o ambiente verde, execute a operação `ANALYZE` em todos os bancos de dados para atualizar a tabela `pg_statistic`. As estatísticas do otimizador não são transferidas durante uma atualização de versão principal, portanto, é necessário gerar novamente todas as estatísticas para evitar problemas de performance. Para conhecer práticas recomendadas adicionais durante as principais atualizações de versões, consulte [Como atualizar a versão principal do RDS para PostgreSQL](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Process.md).
+ Evite configurar gatilhos como `ENABLE REPLICA` ou `ENABLE ALWAYS` se o gatilho for usado na origem para manipular dados. Caso contrário, o sistema de replicação propagará as alterações e executará o gatilho, o que ocasiona duplicação.

# Métodos de replicação do PostgreSQL em implantações azuis/verdes
<a name="blue-green-deployments-replication-type"></a>

O Amazon RDS para PostgreSQL usa principalmente replicação física para implantações azuis/verdes. No entanto, se você solicitar uma atualização de versão principal ao criar a implantação azul/verde e sua instância de banco de dados de origem executar uma das versões do PostgreSQL listadas na tabela abaixo, o Amazon RDS usará a replicação lógica.

A tabela a seguir descreve quando o Amazon RDS usa a replicação física versus lógica para implantações azuis/verdes do PostgreSQL.


| Versão da instância de banco de dados do PostgreSQL de origem | Ação de atualização na implantação azul/verde | Método de replicação | 
| --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/blue-green-deployments-replication-type.html)  | Atualização de versão principal(instância verde em uma versão de mecanismo principal posterior à azul) | Replicação lógica | 
| Todas as versões compatíveis | Atualização de versão secundária ou nenhuma atualização(instância verde na mesma versão de mecanismo principal posterior que a azul) | Replicação física | 

**nota**  
As atualizações de versões principais não são compatíveis com implantações azuis/verdes com RDS para PostgreSQL de origem nas versões 15.3 e anteriores, 14.8 e anteriores, 13.11 e anteriores, 12.15 e anteriores ou 11.20 e anteriores.

Para obter informações sobre as limitações das implantações azuis/verdes que usam replicação física e lógica, consulte as seções a seguir:
+ [Limitações do RDS para PostgreSQL para implantações azuis/verdes com replicação física](blue-green-deployments-considerations.md#blue-green-deployments-limitations-postgres-physical)
+ [Limitações do RDS para PostgreSQL em implantações azuis/verdes com replicação lógica](blue-green-deployments-considerations.md#blue-green-deployments-limitations-postgres-logical)