Procedimiento del reenvío de escritura local en Aurora PostgreSQL - Amazon Aurora

Procedimiento del reenvío de escritura local en Aurora PostgreSQL

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

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

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.

Limitaciones del reenvío de escritura local en Aurora PostgreSQL

Algunas instrucciones no están permitidas o pueden producir resultados obsoletos cuando se utilizan en Aurora PostgreSQL con reenvío de escritura. Además, no se admiten funciones ni procedimientos definidos por el usuario. Por ello, la configuración EnableLocalWriteForwarding está desactivada de forma predeterminada para los clústeres de base de datos. Antes de activarla, asegúrese de que el código de la aplicación no se vea afectado por ninguna de estas restricciones.

Puede utilizar los siguientes tipos de instrucciones SQL con reenvío de escritura:

  • Instrucciones de lenguaje de manipulación de datos (DML) como INSERT, DELETE y UPDATE

  • Instrucciones SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }

  • Instrucciones PREPARE y EXECUTE

  • Instrucciones EXPLAIN con las instrucciones de esta lista

  • Una instrucción DML puede constar de varias partes, como una instrucción INSERT ... SELECT o una instrucción DELETE ... WHERE. En este caso, la instrucción completa se reenvía a la instancia de base de datos del escritor y se ejecuta allí.

Los siguientes tipos de instrucciones SQL no son compatibles con el reenvío de escritura:

nota

Puede utilizar estas declaraciones de forma implícita en su aplicación o inferirlas mediante el protocolo PostgreSQL. Por ejemplo, la gestión de excepciones de PL/SQL puede provocar el uso de SAVEPOINT, que no es una declaración admitida.

  • Instrucciones en lenguaje de definición de datos (DDL)

  • ANALYZE

  • CLUSTER

  • COPY

  • Cursores: los cursores no son compatibles, así que debe asegurarse de cerrarlos antes de utilizar el reenvío de escritura local.

  • Funciones y procedimientos definidos por el usuario.

  • GRANT|REVOKE|REASSIGN OWNED|SECURITY LABEL

  • LOCK

  • SAVEPOINT

  • SELECT INTO

  • SET CONSTRAINTS

  • TRUNCATE

  • VACUUM

  • LISTEN / NOTIFY

  • Comandos de confirmación en dos fases: PREPARE TRANSACTION, COMMIT PREPARED y ROLLBACK PREPARED

  • Actualizaciones de secuencias: nextval() y setval()

Configuración de parámetros predeterminada para el reenvío de escritura

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 Ámbito Tipo Valor predeterminado Valores válidos
apg_write_forward.connect_timeout Sesión segundos 30 0–2147483647
apg_write_forward.consistency_mode Session enum Sesión SESSION, EVENTUAL, GLOBAL, y OFF
apg_write_forward.idle_in_transaction_session_timeout Sesión milisegundos 86 400 000 0–2147483647
apg_write_forward.idle_session_timeout Sesión milisegundos 300 000 0–2147483647
apg_write_forward.max_forwarding_connections_percent 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. 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

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.