

# Configuración de Aurora PostgreSQL para el reenvío de escritura local
<a name="aurora-postgresql-write-forwarding-configuring"></a>

 En las siguientes secciones, puede habilitar el reenvío de escritura local para su clúster de base de datos PostgreSQL de Amazon Aurora, configurar los niveles de consistencia y administrar las transacciones con el reenvío de escritura. 

## Habilitación del reenvío de escritura local
<a name="aurora-postgresql-write-forwarding-enabling"></a>

 De forma predeterminada, el reenvío de escritura local no está habilitado para los clústeres de base de datos de Aurora PostgreSQL. El reenvío de escritura local se habilita a nivel de clúster, no a nivel de instancia. 

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

 Si usa la Consola de administración de AWS, seleccione la casilla de verificación **Activar el reenvío de escritura loca** debajo de **Reenvío de escritura de réplicas de lectura** al crear o modificar un clúster de base de datos. 

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

 Para habilitar el reenvío de escritura local con la AWS CLI, utilice la opción `--enable-local-write-forwarding`. Esta opción funciona cuando crea un nuevo clúster de basede datos mediante el comando `create-db-cluster`. También funciona cuando modifica un clúster de base de datos existente mediante el comando `modify-db-cluster`. Puede deshabilitar el reenvío de escritura local mediante la opción `--no-enable-local-write-forwarding` con estos mismos comandos de la CLI. 

 En el siguiente ejemplo se crea un clúster de base de datos de Aurora PostgreSQL con el reenvío de escritura 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
```

 A continuación, crea instancias de base de datos del escritor y lector para poder utilizar el reenvío de escritura. Para obtener más información, consulte [Creación de un clúster de base de datos de Amazon Aurora](Aurora.CreateInstance.md).

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

 Para habilitar el reenvío de escritura local mediante la API de Amazon RDS, establezca el parámetro `EnableLocalWriteForwarding` en `true`. Este parámetro funciona cuando crea un nuevo clúster de base de datos mediante la operación `CreateDBCluster`. También funciona cuando modifica un clúster de base de datos existente mediante la operación `ModifyDBCluster`. Puede deshabilitar el reenvío de escritura local estableciendo el parámetro `EnableLocalWriteForwarding` en `false`. 

### Habilitación del reenvío de escritura local para las sesiones de bases de datos
<a name="aurora-postgresql-write-forwarding-enabling-session"></a>

 El parámetro `apg_write_forward.consistency_mode` es un parámetro de base de datos y un parámetro de clúster de base de datos que permite el reenvío de escritura. Puede especificar `SESSION`, `EVENTUAL`, `GLOBAL` o `OFF` para el nivel de coherencia de lectura. Para obtener más información sobre los niveles de consistencia, consulte [Coherencia y aislamiento del reenvío de escritura local en Aurora PostgreSQL](#aurora-postgresql-write-forwarding-isolation). 

 Las siguientes reglas se aplican a este parámetro: 
+ El valor predeterminado es `SESSION`.
+  El reenvío de escritura local solo está disponible si establece `apg_write_forward.consistency_mode` en `EVENTUAL`, `SESSION` o `GLOBAL`. Este parámetro solo es pertinente en instancias del lector de clústeres de bases de datos que tengan habilitado el reenvío de escritura local. 
+ Si se establece el valor en `OFF`, se deshabilita el reenvío de escritura local en la sesión. 

## Coherencia y aislamiento del reenvío de escritura local en Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-isolation"></a>

Puede controlar cuál es el grado de coherencia de lectura en una réplica de lectura. Puede ajustar el nivel de coherencia de lectura para asegurarse de que todas las operaciones de escritura reenviadas desde la sesión estén visibles en la réplica de lectura antes de cualquier consulta posterior. También puede utilizar esta configuración para asegurarse de que las consultas de la réplica de lectura siempre vean las actualizaciones más recientes de la instancia de base de datos del escritor. Esto es así incluso para los presentados por otros periodos de sesiones u otros grupos temáticos. Para especificar este tipo de comportamiento para la aplicación, elija el valor adecuado para el parámetro de nivel de sesión `apg_write_forward.consistency_mode`. El parámetro `apg_write_forward.consistency_mode` solo tiene efecto en réplicas de lectura donde está habilitado el reenvío de escritura local.

**nota**  
Para el parámetro `apg_write_forward.consistency_mode`, puede especificar los valores `SESSION`, `EVENTUAL`, `GLOBAL` o `OFF`. De forma predeterminada, el valor se establece en `SESSION`. Si se establece este valor en `OFF`, se deshabilita el reenvío de escritura.

A medida que aumenta el nivel de coherencia, la aplicación pasa más tiempo esperando que los cambios se propaguen a las réplicas de lectura. Puede buscar el equilibrio entre una latencia más baja y asegurarse de que los cambios realizados en otras ubicaciones estén completamente disponibles antes de que se ejecuten las consultas.

Con cada configuración del modo de coherencia disponible, el efecto es el siguiente:
+ `SESSION`: una sesión en una réplica de lectura que utiliza el reenvío de escritura verá los resultados de todos los cambios realizados en esa sesión. Los cambios son visibles independientemente de si la transacción está confirmada. Si es necesario, la consulta espera a que los resultados de las operaciones de escritura reenviadas se repliquen en la instancia de base de datos del lector actual. No espera a que se actualicen los resultados de las operaciones de escritura realizadas en otras sesiones dentro del clúster de base de datos actual. 
+ `EVENTUAL`: una sesión en una réplica de lectura que utiliza el reenvío de escritura puede ver datos ligeramente obsoletos debido al retardo de replicación. Los resultados de las operaciones de escritura de la misma sesión no están visibles hasta que la operación de escritura se realice en la instancia de base de datos del escritor y se repliquen en la réplica de lectura. La consulta no espera a que los resultados actualizados estén disponibles. Por lo tanto, podría recuperar los datos antiguos o los datos actualizados, en función del momento de las instrucciones y la cantidad de retardo de replicación. 
+ `GLOBAL`: una sesión de una réplica de lectura puede ver los cambios realizados por esa sesión. También verá todos los cambios confirmados tanto de la instancia de base de datos del escritor de como de otras réplicas de lectura. Cada consulta puede esperar un tiempo, que variará en función de la cantidad de retardo de la sesión. La consulta continúa cuando la réplica de lectura está actualizada con todos los datos confirmados de la instancia de base de datos del escritor, a partir del momento en que comenzó la consulta. 
**nota**  
El modo de coherencia global afecta a la latencia de las consultas ejecutadas en una sesión. Esperará incluso cuando la sesión no haya enviado ninguna consulta de escritura.
+ `OFF`: el reenvío de escritura local está deshabilitado.

En las sesiones que utilizan reenvío de escritura, solo puede utilizar los niveles de aislamiento `REPEATABLE READ` y `READ COMMITTED`. Sin embargo, no se admite el nivel de `SERIALIZABLE` aislamiento.

 Para obtener más información sobre todos los parámetros relacionados con el reenvío de escritura, consulte [Configuración de parámetros predeterminada para el reenvío de escritura](aurora-postgresql-write-forwarding-understanding.md#aurora-postgresql-write-forwarding-params).

## Modos de acceso a transacciones con reenvío de escritura
<a name="aurora-postgresql-write-forwarding-txns"></a>

Si el modo de acceso a la transacción está configurado en solo lectura, no se utiliza el reenvío de escritura local. Solo puede establecer el modo de acceso en lectura/escritura cuando esté conectado a un clúster de base de datos y a una sesión que tenga habilitado el reenvío de escritura local.

Para obtener más información sobre los modos de acceso a las transacciones, consulte [SET TRANSACTION](https://www.postgresql.org/docs/current/sql-set-transaction.html).