

# Configurar o Aurora PostgreSQL para encaminhamento de gravação local
<a name="aurora-postgresql-write-forwarding-configuring"></a>

 Com as seções a seguir, é possível habilitar o encaminhamento de gravação local para o cluster de banco de dados do Amazon Aurora PostgreSQL, configurando níveis de consistência e gerenciando transações com encaminhamento de gravação. 

## Habilitar o encaminhamento de gravação local
<a name="aurora-postgresql-write-forwarding-enabling"></a>

 Por padrão, o encaminhamento de gravação local não está habilitado para clusters de banco de dados do Aurora PostgreSQL. Você habilita o encaminhamento de gravação local no cluster, não na instância. 

### Console
<a name="aurora-postgresql-write-forwarding-enabling.CON"></a>

 Usando o Console de gerenciamento da AWS, marque a caixa de seleção **Ativar o encaminhamento de gravação local** abaixo de **Encaminhamento de gravação de réplica de leitura** quando você criar ou modificar um cluster de banco de dados. 

### AWS CLI
<a name="aurora-postgresql-write-forwarding-enabling.CLI"></a>

 Para habilitar o encaminhamento de gravação local com a AWS CLI, use a opção `--enable-local-write-forwarding`. Essa opção funciona quando você cria um cluster de banco de dados usando o comando `create-db-cluster`. Ela também funciona quando você modifica um cluster de banco de dados usando o comando `modify-db-cluster`. É possível desabilitar o encaminhamento de gravação local usando a opção `--no-enable-local-write-forwarding` com esses mesmos comandos da CLI. 

 O exemplo a seguir cria um cluster de banco de dados do Aurora PostgreSQL com encaminhamento de gravação local habilitado. 

```
                        aws rds create-db-cluster \
                        --db-cluster-identifier write-forwarding-test-cluster \
                        --enable-local-write-forwarding \
                        --engine aurora-postgresql \
                        --engine-version 16.4 \
                        --master-username myuser \
                        --master-user-password mypassword \
                        --backup-retention 1
```

 Depois, você cria instâncias de banco de dados do gravador e do leitor para poder usar o encaminhamento de gravação. Para ter mais informações, consulte [Criar um cluster de bancos de dados do Amazon Aurora](Aurora.CreateInstance.md).

### API do RDS
<a name="aurora-postgresql-write-forwarding-enabling.API"></a>

 Para habilitar o encaminhamento de gravação local usando a API do Amazon RDS, defina o parâmetro `EnableLocalWriteForwarding` como `true`. Esse parâmetro funciona quando você cria um cluster de banco de dados usando a operação `CreateDBCluster`. Ele também funciona quando você modifica um cluster de banco de dados usando a operação `ModifyDBCluster`. É possível desabilitar o encaminhamento de gravação local definindo o parâmetro `EnableLocalWriteForwarding` como `false`. 

### Habilitar o encaminhamento de gravação local para sessões de banco de dados
<a name="aurora-postgresql-write-forwarding-enabling-session"></a>

 `apg_write_forward.consistency_mode` é um parâmetro de banco de dados e de cluster de banco de dados que permite o encaminhamento de gravação. É possível especificar `SESSION`, `EVENTUAL`, `GLOBAL` ou `OFF` para o nível de consistência de leitura. Para saber mais sobre os níveis de consistência, consulte [Isolamento e consistência para o encaminhamento de gravação local no Aurora PostgreSQL](#aurora-postgresql-write-forwarding-isolation). 

 As seguintes regras se aplicam a esse parâmetro: 
+ O valor padrão é `SESSION`.
+  O encaminhamento de gravação local estará disponível apenas se você definir `apg_write_forward.consistency_mode` como `EVENTUAL`, `SESSION` ou `GLOBAL`. Esse parâmetro é relevante somente em instâncias do leitor de clusters de banco de dados que têm o encaminhamento de gravação local habilitado. 
+ Definir o valor como `OFF` desabilita o encaminhamento de gravação local na sessão. 

## Isolamento e consistência para o encaminhamento de gravação local no Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-isolation"></a>

É possível controlar o grau de consistência de leitura em uma réplica de leitura. Você pode ajustar o nível de consistência de leitura para garantir que todas as operações de gravação encaminhadas da sessão estejam visíveis na réplica de leitura antes de qualquer consulta subsequente. Também é possível usar essa configuração para garantir que as consultas na réplica de leitura sempre vejam as atualizações mais recentes da instância de banco de dados do gravador. Isso acontece mesmo para aquelas submetidas por outras sessões ou outros clusters. Para especificar esse tipo de comportamento para a aplicação, escolha o valor apropriado para o parâmetro `apg_write_forward.consistency_mode` de nível de sessão. O parâmetro `apg_write_forward.consistency_mode` tem efeito somente em réplicas de leitura que tenham o encaminhamento de gravação local habilitado.

**nota**  
Para o parâmetro `apg_write_forward.consistency_mode`, é possível especificar o valor `SESSION`, `EVENTUAL`, `GLOBAL` ou `OFF`. Por padrão, o valor é definido como `SESSION`. Definir o valor como `OFF` desabilita o encaminhamento de gravação.

À medida que você aumenta o nível de consistência, a aplicação passa mais tempo aguardando as alterações serem propagadas para as réplicas de leitura. É possível escolher o equilíbrio entre latência mais baixa e garantia de que as alterações feitas em outros locais estejam totalmente disponíveis antes da execução das consultas.

Com cada configuração de modo de consistência disponível, o efeito é o seguinte:
+ `SESSION`: uma sessão em uma réplica de leitura que usa o encaminhamento de gravação local vê os resultados de todas as alterações feitas nessa sessão. As alterações são visíveis independentemente de a transação ser confirmada. Se necessário, a consulta aguardará que os resultados das operações de gravação encaminhadas sejam replicados na instância de banco de dados do leitor atual. Ela não aguarda resultados atualizados de operações de gravação realizadas em outras sessões no cluster de banco de dados atual. 
+ `EVENTUAL`: uma sessão em uma réplica de leitura que usa o encaminhamento de gravação local pode ver dados ligeiramente obsoletos devido ao atraso de replicação. Os resultados das operações de gravação na mesma sessão ficam visíveis apenas quando a operação de gravação é realizada na instância de banco de dados do gravador e replicada na réplica de leitura. A consulta não espera que os resultados atualizados estejam disponíveis. Assim, ela pode recuperar os dados mais antigos ou os dados atualizados, dependendo do tempo das declarações e da quantidade de atraso da replicação. 
+ `GLOBAL`: uma sessão em uma réplica de leitura vê as alterações feitas por essa sessão. Ela também vê todas as alterações confirmadas da instância de banco de dados do gravador e das outras réplicas de leitura. Cada consulta pode aguardar por um período que varia de acordo com a quantidade de atraso da sessão. A consulta prosseguirá quando a réplica de leitura estiver atualizada com todos os dados confirmados da instância de banco de dados do gravador, a partir do momento em que a consulta foi iniciada. 
**nota**  
O modo de consistência global prejudica a latência das consultas realizadas em uma sessão. Ele realizará uma espera mesmo quando a sessão não tiver enviado nenhuma consulta de gravação.
+ `OFF`: o encaminhamento de gravação local está desabilitado.

Em sessões que usam o encaminhamento de gravação, é possível usar os níveis de isolamento `REPEATABLE READ` e `READ COMMITTED`. No entanto, o nível de isolamento `SERIALIZABLE` não é compatível.

 Para obter mais informações sobre todos os parâmetros envolvidos no encaminhamento de gravação, consulte [Configurações de parâmetros padrão para o encaminhamento de gravação](aurora-postgresql-write-forwarding-understanding.md#aurora-postgresql-write-forwarding-params).

## Modos de acesso a transações com encaminhamento de gravação
<a name="aurora-postgresql-write-forwarding-txns"></a>

Se o modo de acesso a transações estiver definido como somente leitura, o encaminhamento de gravação local não será usado. Você só poderá definir o modo de acesso como leitura e gravação enquanto estiver conectado a um cluster de banco de dados e a uma sessão que tenha o encaminhamento de gravação local habilitado.

Para ter mais informações sobre os modos de acesso a transações, consulte [SET TRANSACTION](https://www.postgresql.org/docs/current/sql-set-transaction.html).