

# Procedimiento del reenvío de escritura local en Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-understanding"></a>

En las siguientes secciones, puede comprobar si un clúster de base de datos tiene habilitado el reenvío de escritura local, ver las consideraciones de compatibilidad y ver los parámetros configurables y la configuración de la autenticación. Esta información le proporciona los detalles necesarios para utilizar la característica de reenvío de escritura local de Aurora PostgreSQL de forma eficaz.

**nota**  
Cuando se reinicia una instancia del escritor de un clúster que utiliza el reenvío de escritura local, todas las transacciones y consultas activas reenviadas en las instancias del lector que utilizan el reenvío de escritura local se cierran automáticamente. Cuando la instancia del escritor vuelva a estar disponible, podrá volver a intentar estas transacciones.

## Comprobación de si un clúster de base de datos tiene habilitado el reenvío de escritura local
<a name="aurora-postgresql-write-forwarding-describing"></a>

Para determinar si puede utilizar el reenvío de escritura local en un clúster de base de datos, confirme que el clúster tenga el atributo `LocalWriteForwardingStatus` establecido en `enabled`.

En la Consola de administración de AWS, en la pestaña **Configuración** de la página de detalles del clúster, verá el estado **Habilitado** para **Reenvío de escritura de réplica de lectura local**.

Para ver el estado de la configuración de reenvío de escritura local de todos los clústeres, ejecute el siguiente comando de la AWS CLI.

**Example**  

```
aws rds describe-db-clusters \
--query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}'

[
{
"LocalWriteForwardingStatus": "enabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-1"
},
{
"LocalWriteForwardingStatus": "disabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-2"
},
{
"LocalWriteForwardingStatus": "requested",
"DBClusterIdentifier": "test-global-cluster-2"
},
{
"LocalWriteForwardingStatus": "null",
"DBClusterIdentifier": "aurora-postgresql-v2-cluster"
}
]
```

Un clúster de base de datos puede tener los siguientes valores para `LocalWriteForwardingStatus`:
+ `disabled`: el reenvío de escritura local está deshabilitado.
+ `disabling`: el reenvío de escritura local está en proceso de deshabilitación.
+ `enabled`: el reenvío de escritura local está habilitado.
+ `enabling`: el reenvío de escritura local está en proceso de habilitación.
+ `null`: el reenvío de escritura local no está disponible para este clúster de base de datos.
+ `requested`: se ha solicitado el reenvío de escritura local, pero aún no está activo.

## Configuración de parámetros predeterminada para el reenvío de escritura
<a name="aurora-postgresql-write-forwarding-params"></a>

Los grupos de parámetros del clúster de Aurora contienen nuevos ajustes para la característica de reenvío de escritura local. Como se trata de parámetros de clúster, todas las instancias de base de datos de cada clúster tienen los mismos valores para estas variables. Los detalles sobre estos parámetros se resumen en la tabla siguiente, con notas de uso después de la tabla.


| Parámetro | Alcance | Tipo | Valor predeterminado | Valores válidos | 
| --- | --- | --- | --- | --- | 
| apg\$1write\$1forward.connect\$1timeout | Sesión | segundos | 30 | 0–2147483647 | 
| apg\$1write\$1forward.consistency\$1mode | Session | enum | Sesión | SESSION, EVENTUAL, GLOBAL, y OFF | 
| apg\$1write\$1forward.idle\$1in\$1transaction\$1session\$1timeout | Sesión | milisegundos | 86400000 | 0–2147483647 | 
| apg\$1write\$1forward.idle\$1session\$1timeout | Sesión | milisegundos | 300000 | 0–2147483647 | 
| apg\$1write\$1forward.max\$1forwarding\$1connections\$1percent | Global | int | 25 | 1–100 | 

El parámetro `apg_write_forward.max_forwarding_connections_percent` es el límite superior en slots de conexiones de base de datos que se puede utilizar para gestionar las consultas reenviadas desde los lectores. Se expresa como un porcentaje de la configuración `max_connections` de la instancia de base de datos del escritor. Por ejemplo, si `max_connections` es `800` y `apg_write_forward.max_forwarding_connections_percent` es `10`, el escritor permite un máximo de 80 sesiones reenviadas simultáneas. Estas conexiones provienen del mismo grupo de conexiones administrado por la configuración `max_connections`. Esta configuración solo se aplica a la instancia de base de datos del escritor cuando el clúster tiene habilitado el reenvío de escritura local.

Utilice la siguiente configuración para controlar las solicitudes de reenvío de escritura local:
+ `apg_write_forward.consistency_mode`: un parámetro de nivel de sesión que controla el grado de coherencia de lectura en una réplica de lectura. Los valores válidos son `SESSION`, `EVENTUAL`, `GLOBAL` o `OFF`. De forma predeterminada, el valor se establece en `SESSION`. Si se establece el valor en `OFF`, se deshabilita el reenvío de escritura local en la sesión. 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-configuring.md#aurora-postgresql-write-forwarding-isolation). Este parámetro solo es pertinente en instancias del lector que tengan habilitado el reenvío de escritura local.
+ `apg_write_forward.connect_timeout`: el número máximo de segundos que espera la réplica de lectura al establecer una conexión con la instancia de base de datos del escritor antes de desistir. Un valor de `0` significa esperar indefinidamente.
+ `apg_write_forward.idle_in_transaction_session_timeout`: el número de milisegundos que la instancia de base de datos del escritor espera a que se produzca actividad en una conexión que se reenvía desde una réplica de lectura que tiene una transacción abierta antes de cerrarla. Si la sesión permanece inactiva en la transacción al finalizar este período, Aurora la termina. Un valor de `0` deshabilita el tiempo de espera.
+ `apg_write_forward.idle_session_timeout`: el número de milisegundos que la instancia de base de datos del escritor espera a que se produzca actividad en una conexión que se reenvía desde una réplica de lectura antes de cerrarla. Si la sesión permanece inactiva al finalizar este período, Aurora la termina. Un valor de `0` desactiva el tiempo de espera.

## rdswriteforwarduser
<a name="aurora-postgresql-write-forwarding-rdswriteforwarduser"></a>

 `rdswriteforwarduser` es un usuario que utilizaremos para establecer una conexión entre la réplica de lectura y la instancia de base de datos del escritor. 

**nota**  
`rdswriteforwarduser` hereda sus privilegios CONNECT en las bases de datos de los clientes mediante el rol PUBLIC. Si se revocan los privilegios del rol PUBLIC, tendrá que conceder los privilegios CONNECT para las bases de datos a las que deba reenviar las escrituras. 