Uso del reenvío de escritura en una base de datos global de Aurora MySQL
Temas
- Disponibilidad regional y por versiones del reenvío de escritura en Aurora MySQL
- Habilitación del reenvío de escritura en Aurora MySQL
- Comprobación de si un clúster secundario tiene habilitado el reenvío de escritura
- Compatibilidad de las aplicaciones y SQL con el reenvío de escritura en Aurora MySQL
- Aislamiento y coherencia del reenvío de escritura en Aurora MySQL
- Ejecución de instrucciones multiparte con reenvío de escritura en Aurora MySQL
- Transacciones con reenvío de escritura en Aurora MySQL
- Parámetros de configuración para el reenvío de escritura en Aurora MySQL
- Métricas de Amazon CloudWatch para el reenvío de escritura en Aurora MySQL
Disponibilidad regional y por versiones del reenvío de escritura en Aurora MySQL
El reenvío de escritura es compatible con Aurora MySQL 2.08.1 y versiones posteriores en todas las regiones donde estén disponibles las bases de datos globales basadas en Aurora MySQL.
Para obtener más información acerca la disponibilidad regional y por versiones de las bases de datos globales de Aurora MySQL, consulte Bases de datos globales de Aurora con Aurora MySQL.
Habilitación del reenvío de escritura en Aurora MySQL
De forma predeterminada, el reenvío de escritura no está habilitado cuando se agrega un clúster secundario a una base de datos global de Aurora.
Para habilitar el reenvío de escritura mediante la AWS Management Console, elija la casilla de verificación Activar el reenvío de escritura global bajo Reenvío de escritura de réplicas de lectura cuando agregue una región en una base de datos global. Para un clúster secundario existente, modifique el clúster a Activar el reenvío de escritura global. Para desactivar el reenvío de escritura, desactive la casilla de verificación Activar el reenvío de escritura global al agregar la región o modificar el clúster secundario.
Para habilitar el reenvío de escritura mediante la AWS CLI, utilice la opción --enable-global-write-forwarding
. Esta opción funciona cuando crea un nuevo clúster secundario mediante el comando create-db-cluster
. También funciona cuando modifica un clúster secundario existente mediante el comando modify-db-cluster
. Requiere que la base de datos global utilice una versión de Aurora que admita el reenvío de escritura. Puede desactivar el reenvío de escritura mediante la opción --no-enable-global-write-forwarding
con estos mismos comandos de la CLI.
Para habilitar el reenvío de escritura mediante la API de Amazon RDS, establezca el parámetro EnableGlobalWriteForwarding
en true
. Este parámetro funciona cuando crea un nuevo clúster secundario mediante la operación CreateDBCluster
. También funciona cuando modifica un clúster secundario existente mediante la operación ModifyDBCluster
. Requiere que la base de datos global utilice una versión de Aurora que admita el reenvío de escritura. Puede desactivar el reenvío de escritura estableciendo el parámetro EnableGlobalWriteForwarding
en false
.
nota
Para que una sesión de base de datos utilice el reenvío de escritura, especifique una configuración para el parámetro de configuración aurora_replica_read_consistency
. Haga esto en cada sesión que utilice la característica de reenvío de escritura. Para obtener información acerca de este parámetro, consulte Aislamiento y coherencia del reenvío de escritura en Aurora MySQL.
La característica RDS Proxy no admite el valor SESSION
de la variable aurora_replica_read_consistency
. Esto puede provocar un comportamiento inesperado.
Los siguientes ejemplos de CLI muestran cómo puede configurar una base de datos global de Aurora con reenvío de escritura habilitado o deshabilitado. Los elementos resaltados representan los comandos y las opciones que son importantes para especificar y mantener la coherencia al configurar la infraestructura de una base de datos global de Aurora.
En el siguiente ejemplo se crea una base de datos global de Aurora, un clúster principal y un clúster secundario con reenvío de escritura habilitado. Sustituya sus propias opciones por el nombre de usuario, la contraseña y las regiones principales y secundarias de AWS.
# Create overall global database. aws rds create-global-cluster --global-cluster-identifier write-forwarding-test \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region
us-east-1
# Create primary cluster, in the same AWS Region as the global database. aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \ --db-cluster-identifier write-forwarding-test-cluster-1 \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --master-usernameuser_name
--master-user-passwordpassword
\ --regionus-east-1
aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-1 \ --db-instance-identifier write-forwarding-test-cluster-1-instance-1 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-east-1
aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-1 \ --db-instance-identifier write-forwarding-test-cluster-1-instance-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-east-1
# Create secondary cluster, in a different AWS Region than the global database, # with write forwarding enabled. aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \ --db-cluster-identifier write-forwarding-test-cluster-2 \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-east-2
\ --enable-global-write-forwarding aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-1 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-east-2
aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-east-2
El siguiente ejemplo continúa desde el anterior. Crea un clúster secundario sin el reenvío de escritura habilitado y, a continuación, habilita el reenvío de escritura. Una vez finalizado este ejemplo, todos los clústeres secundarios de la base de datos global tendrán habilitado el reenvío de escritura.
# Create secondary cluster, in a different AWS Region than the global database, # without write forwarding enabled. aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \ --db-cluster-identifier write-forwarding-test-cluster-2 \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region
us-west-1
aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-1 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-west-1
aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --regionus-west-1
aws rds modify-db-cluster --db-cluster-identifier write-forwarding-test-cluster-2 \ --regionus-east-2
\ --enable-global-write-forwarding
Comprobación de si un clúster secundario tiene habilitado el reenvío de escritura
Para determinar si puede utilizar el reenvío de escritura desde un clúster secundario, puede comprobar si el clúster tiene el atributo "GlobalWriteForwardingStatus": "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 global.
Para ver el estado de la configuración de reenvío de escritura global de todos los clústeres, ejecute el siguiente comando de AWS CLI.
Un clúster secundario muestra el valor "enabled"
o "disabled"
para indicar si el reenvío de escritura está activado o desactivado. Un valor de null
indica que el reenvío de escritura no está disponible para ese clúster. O el clúster no forma parte de una base de datos global o es el clúster principal en lugar de un clúster secundario. El valor también puede ser "enabling"
o "disabling"
si el reenvío de escritura está en proceso de ser activado o desactivado.
aws rds describe-db-clusters \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,GlobalWriteForwardingStatus:GlobalWriteForwardingStatus}' [ { "GlobalWriteForwardingStatus": "enabled", "DBClusterIdentifier": "aurora-write-forwarding-test-replica-1" }, { "GlobalWriteForwardingStatus": "disabled", "DBClusterIdentifier": "aurora-write-forwarding-test-replica-2" }, { "GlobalWriteForwardingStatus": null, "DBClusterIdentifier": "non-global-cluster" } ]
Para buscar todos los clústeres secundarios que tienen habilitado el reenvío de escritura global, ejecute el siguiente comando. Este comando también devuelve el punto de enlace del lector del clúster. Utilice el punto de conexión del lector del clúster secundario para cuando se utiliza el reenvío de escritura desde el secundario al primario en la base de datos Aurora global.
ejemplo
aws rds describe-db-clusters --query 'DBClusters[].{DBClusterIdentifier:DBClusterIdentifier,GlobalWriteForwardingStatus:GlobalWriteForwardingStatus,ReaderEndpoint:ReaderEndpoint} | [?GlobalWriteForwardingStatus == `enabled`]' [ { "GlobalWriteForwardingStatus": "enabled", "ReaderEndpoint": "aurora-write-forwarding-test-replica-1.cluster-ro-cnpexample.us-west-2.rds.amazonaws.com", "DBClusterIdentifier": "aurora-write-forwarding-test-replica-1" } ]
Compatibilidad de las aplicaciones y SQL con el reenvío de escritura en Aurora MySQL
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
yUPDATE
. Existen algunas restricciones sobre las propiedades de estas instrucciones que puede utilizar con el reenvío de escritura, como se describe a continuación. -
Instrucciones
SELECT ... LOCK IN SHARE MODE
ySELECT FOR UPDATE
. -
Instrucciones
PREPARE
yEXECUTE
.
Algunas instrucciones no están permitidas o pueden producir resultados obsoletos cuando se utilizan en una base de datos global con reenvío de escritura. Por ello, la configuración EnableGlobalWriteForwarding
está desactivada de forma predeterminada para los clústeres secundarios. Antes de activarla, asegúrese de que el código de la aplicación no se vea afectado por ninguna de estas restricciones.
Las siguientes restricciones se aplican a las instrucciones SQL que utiliza con el reenvío de escritura. En algunos casos, puede utilizar las instrucciones en clústeres secundarios con reenvío de escritura habilitado en el nivel de clúster. Este enfoque funciona si el reenvío de escritura no está activado dentro de la sesión por el parámetro de configuración aurora_replica_read_consistency
. Intentar usar una instrucción cuando no está permitida por el reenvío de escritura provoca un mensaje de error con el siguiente formato.
ERROR 1235 (42000): This version of MySQL doesn't yet support '
operation
with write forwarding'.
- Lenguaje de definición de datos (DDL)
-
Conéctese al clúster principal para ejecutar las instrucciones de lenguaje de definición de datos. No puede ejecutarlas desde instancias de base de datos del lector.
- Actualizar una tabla permanente con datos de una tabla temporal
-
Puede utilizar tablas temporales en clústeres secundarios con el reenvío de escritura habilitado. Sin embargo, no puede utilizar una instrucción DML para modificar una tabla permanente si la instrucción hace referencia a una tabla temporal. Por ejemplo, no puede utilizar una instrucción
INSERT ... SELECT
que saque los datos de una tabla temporal. La tabla temporal existe en el clúster secundario y no está disponible cuando la instrucción se ejecuta en el clúster principal. - Transacciones XA
-
No puede utilizar las siguientes instrucciones en un clúster secundario cuando el reenvío de escritura esté activado dentro de la sesión. Puede utilizar estas instrucciones en clústeres secundarios que no tengan habilitado el reenvío de escritura o en sesiones en las que la configuración
aurora_replica_read_consistency
esté vacía. Antes de activar el reenvío de escritura dentro de una sesión, compruebe si su código utiliza estas instrucciones.XA {START|BEGIN} xid [JOIN|RESUME] XA END xid [SUSPEND [FOR MIGRATE]] XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER [CONVERT XID]
- Instrucciones LOAD para tablas permanentes
-
No puede utilizar las siguientes instrucciones en un clúster secundario con reenvío de escritura habilitado.
LOAD DATA INFILE 'data.txt' INTO TABLE t1; LOAD XML LOCAL INFILE 'test.xml' INTO TABLE t1;
Puede cargar datos en una tabla temporal de un clúster secundario. Sin embargo, asegúrese de ejecutar cualquier instrucción de
LOAD
que haga referencia a tablas permanentes solo en el clúster principal. - Instrucciones de complemento
-
No puede utilizar las siguientes instrucciones en un clúster secundario con reenvío de escritura habilitado.
INSTALL PLUGIN example SONAME 'ha_example.so'; UNINSTALL PLUGIN example;
- Declaraciones SAVEPOINT
-
No puede utilizar las siguientes instrucciones en un clúster secundario cuando el reenvío de escritura esté activado dentro de la sesión. Puede utilizar estas instrucciones en clústeres secundarios que no tengan habilitado el reenvío de escritura o en sesiones en las que la configuración
aurora_replica_read_consistency
esté en blanco. Compruebe si su código utiliza estas instrucciones antes de activar el reenvío de escritura dentro de una sesión.SAVEPOINT t1_save; ROLLBACK TO SAVEPOINT t1_save; RELEASE SAVEPOINT t1_save;
Aislamiento y coherencia del reenvío de escritura en Aurora MySQL
En las sesiones que utilizan reenvío de escritura, solo puede utilizar el nivel de aislamiento REPEATABLE READ
. Aunque también puede utilizar el nivel de aislamiento READ COMMITTED
con clústeres de solo lectura en regiones secundarias de AWS, ese nivel de aislamiento no funciona con el reenvío de escritura. Para obtener información acerca de los niveles de aislamiento de REPEATABLE READ
y READ COMMITTED
, consulte Niveles de aislamiento de Aurora MySQL.
Puede controlar cuál es el grado de coherencia de lectura en un clúster secundario. El nivel de coherencia de lectura determina cuánto espera el clúster secundario antes de cada operación de lectura para garantizar que algunos de los cambios o todos los cambios se repliquen desde el clúster principal. 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 el clúster secundario antes de cualquier consulta posterior. También puede utilizar esta configuración para asegurarse de que las consultas del clúster secundario siempre vean las actualizaciones más recientes del clúster principal. 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 un valor para el parámetro de nivel de sesión aurora_replica_read_consistency
.
importante
Establezca siempre el parámetro aurora_replica_read_consistency
para cualquier sesión para la que desee reenviar escrituras. De lo contrario, Aurora no habilitará el reenvío de escritura en esa sesión. Este parámetro tiene un valor vacío por defecto, por lo que debe elegir un valor específico cuando utilice este parámetro. El parámetro aurora_replica_read_consistency
solo tiene efecto en clústeres secundarios donde está habilitado el reenvío de escritura.
Para la versión 2 de Aurora MySQL y la versión 3 anterior a la 3.04, utilice aurora_replica_read_consistency
como variable de sesión. Para la versión 3.04 y versiones posteriores de Aurora MySQL, puede usar aurora_replica_read_consistency
como variable de sesión o como parámetro de clúster de base de datos.
Para el parámetro aurora_replica_read_consistency
, puede especificar los valores EVENTUAL
, SESSION
, y GLOBAL
.
A medida que aumenta el nivel de coherencia, la aplicación pasa más tiempo esperando que los cambios se propaguen entre las regiones de AWS. Puede buscar el equilibrio entre un tiempo de respuesta rápido y asegurarse de que los cambios realizados en otras ubicaciones estén completamente disponibles antes de que se ejecuten las consultas.
Con la coherencia de lectura establecida en EVENTUAL
, las consultas en una región secundaria de AWS que utiliza el reenvío de escritura pueden ver datos ligeramente obsoletos debido al retardo de reproducción. Los resultados de las operaciones de escritura de la misma sesión no son visibles hasta que la operación de escritura se realiza en la región principal y se replica en la región actual. 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.
Con la coherencia de lectura establecida en SESSION
, todas las consultas de una región secundaria de AWS que utiliza el reenvío de escritura verán 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 región actual. No espera a que se actualicen los resultados de las operaciones de escritura realizadas en otras regiones o en otras sesiones dentro de la región actual.
Con la coherencia de lectura establecida en GLOBAL
, una sesión de una región secundaria de AWS verá los cambios realizados por esa sesión. También verá todos los cambios confirmados tanto de la región principal de AWS como de otras regiones secundarias de AWS. 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 el clúster secundario está actualizado con todos los datos confirmados del clúster principal, a partir del momento en que comenzó la consulta.
Para obtener más información sobre todos los parámetros relacionados con el reenvío de escritura, consulte Parámetros de configuración para el reenvío de escritura en Aurora MySQL.
Ejemplos de uso del reenvío de escritura
Estos ejemplos utilizan aurora_replica_read_consistency
como variable de sesión. Para la versión 3.04 y versiones posteriores de Aurora MySQL, puede usar aurora_replica_read_consistency
como variable de sesión o como parámetro de clúster de base de datos.
En el ejemplo siguiente, el clúster principal se encuentra en la región de US East (N. Virginia) El clúster secundario se encuentra en la región de EE.UU. Este (Ohio). El ejemplo muestra los efectos de ejecutar sentencias INSERT
seguidas de instrucciones SELECT
. Dependiendo de cuál sea el valor de la configuración aurora_replica_read_consistency
, los resultados pueden diferir en función del momento en que se produzcan las instrucciones. Para lograr una mayor coherencia, puede esperar brevemente antes de emitir la instrucción SELECT
. O Aurora puede esperar automáticamente hasta que los resultados terminen de replicarse antes de continuar con SELECT
.
En este ejemplo, hay una configuración de coherencia de lectura de eventual
. Ejecutar una instrucción INSERT
inmediatamente seguida de una instrucción SELECT
todavía devuelve el valor de COUNT(*)
. Este valor refleja el número de filas antes de insertar la nueva fila. Al ejecutar SELECT
de nuevo poco tiempo después se devuelve el recuento de filas actualizado. Las instrucciones SELECT
no esperan.
mysql> set aurora_replica_read_consistency = 'eventual'; mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> insert into t1 values (6); select count(*) from t1; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
Con una configuración de coherencia de lectura de session
, una instrucción SELECT
inmediatamente después de una instrucción INSERT
espera hasta que los cambios de la instrucción INSERT
sean visibles. Las instrucciones SELECT
posteriores no esperan.
mysql> set aurora_replica_read_consistency = 'session'; mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.01 sec) mysql> insert into t1 values (6); select count(*) from t1; select count(*) from t1; Query OK, 1 row affected (0.08 sec) +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.37 sec) +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
Con la configuración de coherencia de lectura todavía establecida en session
, al introducir una breve espera después de realizar una instrucción INSERT
, el recuento de filas actualizado estará disponible para cuando se ejecute la siguiente instrucción SELECT
.
mysql> insert into t1 values (6); select sleep(2); select count(*) from t1; Query OK, 1 row affected (0.07 sec) +----------+ | sleep(2) | +----------+ | 0 | +----------+ 1 row in set (2.01 sec) +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.00 sec)
Con una configuración de coherencia de lectura de global
, cada instrucción SELECT
espera para asegurarse de que todos los cambios de datos que se realicen a partir de la hora de inicio de la instrucción sean visibles antes de realizar la consulta. La cantidad de espera de cada instrucción SELECT
varía en función de la cantidad de retardo de replicación entre los clústeres principal y secundario.
mysql> set aurora_replica_read_consistency = 'global'; mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.75 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.37 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.66 sec)
Ejecución de instrucciones multiparte con reenvío de escritura en Aurora MySQL
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 al clúster principal y se ejecuta allí.
Transacciones con reenvío de escritura en Aurora MySQL
Que la transacción se reenvíe al clúster principal o no depende del modo de acceso de la transacción. Puede especificar el modo de acceso de la transacción mediante la instrucción SET TRANSACTION
o la instrucción START TRANSACTION
. También puede cambiar el valor de la variable de sesión transaction_read_only
Si una transacción de larga duración no emite ninguna instrucción durante un período de tiempo significativo, podría exceder el período de tiempo de espera de inactividad. Este período tiene un valor predeterminado de un minuto. Puede aumentarlo hasta un día. El clúster principal cancela las transacciones que superan el tiempo de espera de inactividad. La siguiente instrucción que envíe recibirá un error de tiempo de espera. A continuación, Aurora revertirá la transacción.
Este tipo de error puede producirse en otros casos cuando el reenvío de escritura deja de estar disponible. Por ejemplo, Aurora cancela cualquier transacción que utilice reenvío de escritura si reinicia el clúster principal o si desactiva la configuración de reenvío de escritura.
Parámetros de configuración para el reenvío de escritura en Aurora MySQL
Los grupos de parámetros del clúster de Aurora contienen nuevos ajustes para la característica de reenvío de escritura. 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.
Nombre | Ámbito | Tipo | Valor predeterminado | Valores válidos |
---|---|---|---|---|
aurora_fwd_master_idle_timeout (Aurora MySQL, versión 2) |
Global | entero sin signo | 60 | 1-86 400 |
aurora_fwd_master_max_connections_pct (Aurora MySQL, versión 2) |
Global | entero largo sin signo | 10 | 0–90 |
aurora_fwd_writer_idle_timeout (Aurora MySQL, versión 3) |
Global | entero sin signo | 60 | 1-86 400 |
aurora_fwd_writer_max_connections_pct (Aurora MySQL, versión 3) |
Global | entero largo sin signo | 10 | 0–90 |
aurora_replica_read_consistency |
Session | Enum | '' (null) | EVENTUAL , SESSION , GLOBAL |
Para controlar las solicitudes de escritura entrantes de clústeres secundarios, utilice esta configuración en el clúster principal:
-
aurora_fwd_master_idle_timeout
,:aurora_fwd_writer_idle_timeout
la cantidad de segundos que el clúster principal espera actividad en una conexión que se reenvía desde un clúster secundario antes de cerrarla. Si la sesión permanece inactiva al finalizar este período, Aurora la cancela. -
aurora_fwd_master_max_connections_pct
,:aurora_fwd_writer_max_connections_pct
el límite superior en conexiones de base de datos que se puede utilizar en una instancia de base de datos de escritor para gestionar las consultas reenviadas desde los lectores. Se expresa como un porcentaje de la configuraciónmax_connections
de la instancia de base de datos de escritor en el clúster principal. Por ejemplo, simax_connections
es 800 yaurora_fwd_master_max_connections_pct
oaurora_fwd_writer_max_connections_pct
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ónmax_connections
.Esta configuración solo se aplica en el clúster principal, cuando uno o más clústeres secundarios tienen habilitado el reenvío de escritura. Si disminuye el valor, las conexiones existentes no se ven afectadas. Aurora tendrá en cuenta el nuevo valor de la configuración al intentar crear una nueva conexión desde un clúster secundario. El valor predeterminado es 10, que representa el 10% del valor
max_connections
. Si habilita el reenvío de consultas en cualquiera de los clústeres secundarios, esta configuración debe tener un valor distinto de cero para que las operaciones de escritura de clústeres secundarios se realicen correctamente. Si el valor es cero, las operaciones de escritura recibirán el código de errorER_CON_COUNT_ERROR
con el mensajeNot enough connections on writer to handle your request
.
El parámetro aurora_replica_read_consistency
es un parámetro de nivel de sesión que permite el reenvío de escritura. Usted lo usa en cada sesión. Puede especificar EVENTUAL
, SESSION
o GLOBAL
para el nivel de coherencia de lectura. Para obtener más información sobre los niveles de consistencia, consulte Aislamiento y coherencia del reenvío de escritura en Aurora MySQL. Las siguientes reglas se aplican a este parámetro:
-
Este es un parámetro de nivel de sesión. El valor predeterminado es '' (vacío).
-
El reenvío de escritura solo está disponible en una sesión si
aurora_replica_read_consistency
está establecido enEVENTUAL
,SESSION
oGLOBAL
. Este parámetro solo es relevante en instancias de lector de clústeres secundarios que tienen habilitado el reenvío de escritura y que se encuentran en una base de datos global de Aurora. -
No puede establecer esta variable (cuando está vacía) o sin establecer (cuando ya está configurada) dentro de una transacción multideclaración. Sin embargo, puede cambiarlo de un valor válido (
EVENTUAL
,SESSION
oGLOBAL
) a otro valor válido (EVENTUAL
,SESSION
oGLOBAL
) durante una transacción de este tipo. -
La variable no puede ser
SET
cuando el reenvío de escritura no está habilitado en el clúster secundario. -
Establecer la variable de sesión en un clúster principal no tiene ningún efecto. Si intenta modificar esta variable en un clúster principal, recibirá un error.
Métricas de Amazon CloudWatch para el reenvío de escritura en Aurora MySQL
Las siguientes métricas de Amazon CloudWatch y variables de estado de Aurora MySQL se aplican al clúster principal cuando se utiliza el reenvío de escritura en uno o más clústeres secundarios. Todas estas métricas se miden en la instancia de base de datos de escritor del clúster principal.
Métrica de CloudWatch | Variable de estado de Aurora MySQL | Unidad | Descripción |
---|---|---|---|
|
– | Recuento |
El número de consultas reenviadas que se han rechazado porque la sesión en la instancia de base de datos de escritura está completa. Para Aurora MySQL, versión 2. |
|
– | Recuento |
El número de consultas reenviadas que se han rechazado porque la sesión en la instancia de base de datos de escritura está completa. Para Aurora MySQL versión 3. |
|
– | Milisegundos |
Tiempo medio para procesar cada instrucción DML reenviada en la instancia de base de datos de escritor. No incluye el tiempo que tarda el clúster secundario en reenviar la solicitud de escritura ni el tiempo necesario para replicar los cambios en el clúster secundario. Para Aurora MySQL, versión 2. |
|
– | Recuento por segundo |
Número de instrucciones DML reenviadas procesadas cada segundo por esta instancia de base de datos de escritor. Para Aurora MySQL, versión 2. |
|
Aurora_fwd_master_open_sessions |
Recuento |
Número de sesiones reenviadas en la instancia de base de datos de escritor. Para Aurora MySQL, versión 2. |
– |
Aurora_fwd_master_dml_stmt_count |
Recuento | Número total de instrucciones DML reenviadas a esta instancia de base de datos de escritor. Para Aurora MySQL, versión 2. |
– |
Aurora_fwd_master_dml_stmt_duration |
Microsegundos |
Duración total de las instrucciones DML reenviadas a esta instancia de base de datos de escritor. Para Aurora MySQL, versión 2. |
– |
Aurora_fwd_master_select_stmt_count |
Recuento |
Número total de instancias Para Aurora MySQL, versión 2. |
– |
Aurora_fwd_master_select_stmt_duration |
Microsegundos |
Duración total de las instrucciones Para Aurora MySQL, versión 2. |
|
– | Milisegundos |
Tiempo medio para procesar cada instrucción DML reenviada en la instancia de base de datos de escritor. No incluye el tiempo que tarda el clúster secundario en reenviar la solicitud de escritura ni el tiempo necesario para replicar los cambios en el clúster secundario. Para Aurora MySQL versión 3. |
|
– | Recuento por segundo | Número de instrucciones DML reenviadas procesadas cada segundo por esta instancia de base de datos de escritor. Para Aurora MySQL versión 3. |
|
Aurora_fwd_writer_open_sessions |
Recuento | Número de sesiones reenviadas en la instancia de base de datos de escritor. Para Aurora MySQL versión 3. |
– |
Aurora_fwd_writer_dml_stmt_count |
Recuento | Número total de instrucciones DML reenviadas a esta instancia de base de datos de escritor. Para Aurora MySQL versión 3. |
– |
Aurora_fwd_writer_dml_stmt_duration |
Microsegundos | Duración total de las instrucciones DML reenviadas a esta instancia de base de datos de escritor. |
– |
Aurora_fwd_writer_select_stmt_count |
Recuento | Número total de instancias |
– |
Aurora_fwd_writer_select_stmt_duration |
Microsegundos |
Duración total de las instrucciones Para Aurora MySQL versión 3. |
Las siguientes métricas de CloudWatch y variables de estado de Aurora MySQL se aplican a cada clúster secundario. Estas métricas se miden en cada instancia de base de datos de lector de un clúster secundario con reenvío de escritura habilitado.
Métrica de CloudWatch | Variable de estado de Aurora MySQL | Unidad | Descripción |
---|---|---|---|
|
– | Milisegundos | Tiempo medio de respuesta de los DML reenviados durante la réplica. |
|
– | Recuento por segundo | Número de sentencias DML reenviadas procesadas por segundo. |
|
Aurora_fwd_replica_open_sessions |
Recuento | Número de sesiones que utilizan el reenvío de escritura en una instancia de base de datos del lector. |
|
– | Milisegundos |
Tiempo de espera medio que una instrucción El grado en que la instancia de base de datos de lector espera antes de procesar una consulta depende de la configuración |
|
– | Recuento por segundo | Número total de SELECT instrucciones procesadas cada segundo en todas las sesiones que reenvían escrituras. |
|
(–) | Milisegundos | Latencia SELECT reenviada, media sobre todas las declaraciones SELECT reenviadas dentro del periodo de monitoreo. |
|
– | Recuento por segundo | Rendimiento SELECT reenviado, media por segundo dentro del período de supervisión. |
– |
Aurora_fwd_replica_dml_stmt_count |
Recuento | Número total de instrucciones DML reenviadas desde esta instancia de base de datos de lector. |
– |
Aurora_fwd_replica_dml_stmt_duration |
Microsegundos | Duración total de las instrucciones DML reenviadas desde esta instancia de base de datos de lector. |
– |
Aurora_fwd_replica_errors_session_limit |
Recuento |
Número de sesiones rechazadas por el clúster principal debido a una de las siguientes condiciones de error:
|
– |
Aurora_fwd_replica_read_wait_count |
Recuento | Número total de esperas de lectura tras escritura en esta instancia de base de datos del lector. |
– |
Aurora_fwd_replica_read_wait_duration |
Microsegundos | Duración total de las esperas debido a la configuración de coherencia de lectura en esta instancia de base de datos de lector. |
– |
Aurora_fwd_replica_select_stmt_count |
Recuento | Número total de instrucciones SELECT reenviadas desde esta instancia de base de datos de lector. |
– |
Aurora_fwd_replica_select_stmt_duration |
Microsegundos | Duración total de las instrucciones SELECT reenviadas desde esta instancia de base de datos de lector. |