Configuración de Aurora PostgreSQL para el reenvío de escritura local - Amazon Aurora

Configuración de Aurora PostgreSQL para el reenvío de escritura local

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

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.

Si usa la AWS Management Console, 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.

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.

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

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.

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

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.

Modos de acceso a transacciones con reenvío de escritura

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.