Utilisation du transfert d'écriture dans une base de données SQL globale Aurora My - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du transfert d'écriture dans une base de données SQL globale Aurora My

Disponibilité de la région et de la version du transfert d'écriture dans Aurora My SQL

Le transfert d'écriture est pris en charge avec Aurora My SQL 2.08.1 et les versions supérieures, dans toutes les régions où des bases de données globales SQL basées sur Aurora My sont disponibles.

Pour plus d'informations sur la version et la disponibilité par région des bases de données SQL mondiales Aurora My, consultezBases de données mondiales Aurora avec Aurora My SQL.

Activation du transfert d'écriture dans Aurora My SQL

Par défaut, le transfert d'écriture n'est pas activé lorsque vous ajoutez un cluster secondaire à une base de données globale Aurora.

Pour activer le transfert d'écriture à l'aide du AWS Management Console, cochez la case Activer le transfert d'écriture global sous Lire le transfert d'écriture répliqué lorsque vous ajoutez une région pour une base de données globale. Pour un cluster secondaire existant, modifiez le cluster pour Activer le transfert d'écriture global. Pour désactiver le transfert d'écriture, décochez la case Activer le transfert d'écriture global lors de l'ajout de la région ou de la modification du cluster secondaire.

Pour activer le transfert d'écriture à l'aide de AWS CLI, utilisez l'--enable-global-write-forwardingoption. Cette option est utile lorsque vous créez un nouveau cluster secondaire à l'aide de la commande create-db-cluster. Elle est également utile lorsque vous modifiez un cluster secondaire existant à l'aide de la commande modify-db-cluster. Elle nécessite que la base de données globale utilise une version d'Aurora qui prend en charge le transfert d'écriture. Vous pouvez désactiver le transfert d'écriture en utilisant l'--no-enable-global-write-forwardingoption avec ces mêmes CLI commandes.

Pour activer le transfert d'écriture à l'aide d'Amazon RDSAPI, définissez le EnableGlobalWriteForwarding paramètre surtrue. Ce paramètre agit lorsque vous créez un cluster secondaire à l'aide de l'opération CreateDBCluster. Il agit également lorsque vous modifiez un cluster secondaire existant à l'aide de l'opération ModifyDBCluster. Elle nécessite que la base de données globale utilise une version d'Aurora qui prend en charge le transfert d'écriture. Vous pouvez désactiver le transfert d'écriture en définissant le paramètre EnableGlobalWriteForwarding sur false.

Note

Pour qu'une session de base de données utilise le transfert d'écriture, spécifiez un paramètre pour le paramètre de configuration aurora_replica_read_consistency. Faites-le lors de chaque session qui utilise la fonctionnalité de transfert d'écriture. Pour plus d'informations sur ce paramètre, consultez Isolation et cohérence pour le transfert d'écriture dans Aurora My SQL.

La fonction RDS Proxy ne prend pas en charge la SESSION valeur de la aurora_replica_read_consistency variable. La définition de cette valeur peut entraîner un comportement inattendu.

Les CLI exemples suivants montrent comment configurer une base de données globale Aurora avec le transfert d'écriture activé ou désactivé. Les éléments en surbrillance représentent les commandes et les options qui sont importantes pour spécifier et conserver la cohérence lors de la configuration de l'infrastructure d'une base de données Aurora globale.

L'exemple suivant crée une base de données Aurora globale, un cluster principal et un cluster secondaire avec le transfert d'écriture activé. Remplacez vos propres choix par le nom d'utilisateur, le mot de passe et les régions AWS principales et secondaires.

# 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-username user_name --master-user-password password \ --region us-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 \ --region us-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 \ --region us-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 \ --region us-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 \ --region us-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 \ --region us-east-2

L'exemple suivant est la suite de l'exemple précédent. Il crée un cluster secondaire sans le transfert d'écriture activé, puis active le transfert d'écriture. A la fin de cet exemple, le transfert d'écriture est activé sur tous les clusters secondaires de la base de données globale.

# 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 \ --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-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-west-1 aws rds modify-db-cluster --db-cluster-identifier write-forwarding-test-cluster-2 \ --region us-east-2 \ --enable-global-write-forwarding

Vérifier si le transfert d'écriture est activé sur un cluster secondaire dans Aurora My SQL

Pour déterminer si vous pouvez utiliser le transfert d'écriture à partir d'un cluster secondaire, vous pouvez vérifier si le cluster possède l'attribut "GlobalWriteForwardingStatus": "enabled".

Dans l' AWS Management Console onglet Configuration de la page de détails du cluster, le statut Activé pour le transfert d'écriture global en lecture et en réplique s'affiche.

Pour connaître l'état du paramètre global de transfert d'écriture pour tous vos clusters, exécutez la AWS CLI commande suivante.

Un cluster secondaire affiche la valeur "enabled" ou "disabled" pour indiquer si le transfert d'écriture est activé ou désactivé. La valeur null indique que le transfert d'écriture n'est pas disponible pour ce cluster. Soit le cluster ne fait pas partie d'une base de données globale, soit il s'agit du cluster principal et non d'un cluster secondaire. La valeur peut également être "enabling" ou "disabling" si le transfert d'écriture est en cours d'activation ou de désactivation.

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" } ]

Pour rechercher uniquement les clusters secondaires pour lesquels le transfert d'écriture global est activé, exécutez la commande suivante. Cette commande renvoie également le point de terminaison du lecteur du cluster. Vous utilisez le point de terminaison du lecteur du cluster secondaire lorsque vous utilisez le transfert d'écriture du secondaire vers le principal dans votre base de données Aurora globale.

Exemple
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" } ]

Application et SQL compatibilité avec le transfert d'écriture dans Aurora My SQL

Vous pouvez utiliser les types d'SQLinstructions suivants avec le transfert d'écriture :

  • Instructions du langage de manipulation des données (DML)INSERT, telles queDELETE, etUPDATE. Il existe certaines restrictions concernant les propriétés de ces instructions que vous pouvez utiliser avec le transfert d'écriture, comme décrit ci-dessous.

  • Instructions SELECT ... LOCK IN SHARE MODE et SELECT FOR UPDATE.

  • Instructions PREPARE et EXECUTE.

Utilisées dans une base de données globale avec transfert d'écriture, certaines instructions ne sont pas autorisées ou peuvent produire des résultats obsolètes. Par conséquent, le paramètre EnableGlobalWriteForwarding est désactivé par défaut pour les clusters secondaires. Avant de l'activer, vérifiez que votre code d'application n'est affecté par aucune de ces restrictions.

Les restrictions suivantes s'appliquent aux SQL instructions que vous utilisez pour le transfert d'écriture. Dans certains cas, vous pouvez utiliser les instructions sur des clusters secondaires avec le transfert d'écriture activé au niveau du cluster. Cette approche fonctionne si le transfert d'écriture n'est pas activé dans la session par le paramètre de configuration aurora_replica_read_consistency. Essayer d'utiliser une instruction lorsqu'elle n'est pas autorisée en raison du transfert d'écriture provoque un message d'erreur au format suivant.

ERROR 1235 (42000): This version of MySQL doesn't yet support 'operation with write forwarding'.
Langage de définition des données (DDL)

Connectez-vous au cluster principal pour exécuter DDL des instructions. Vous ne pouvez pas les exécuter à partir des instances de base de données de lecteur.

Mise à jour d'une table permanente à l'aide des données d'une table temporaire

Vous pouvez utiliser des tables temporaires sur des clusters secondaires avec le transfert d'écriture activé. Toutefois, vous ne pouvez pas utiliser une DML instruction pour modifier une table permanente si l'instruction fait référence à une table temporaire. Par exemple, vous ne pouvez pas utiliser une instruction INSERT ... SELECT qui prend les données d'une table temporaire. La table temporaire existe sur le cluster secondaire et n'est pas disponible lorsque l'instruction s'exécute sur le cluster principal.

Transactions XA

Vous ne pouvez pas utiliser les instructions suivantes sur un cluster secondaire lorsque le transfert d'écriture est activé dans la session. Vous pouvez utiliser ces instructions sur des clusters secondaires pour lesquels le transfert d'écriture n'est pas activé, ou dans des sessions où le paramètre aurora_replica_read_consistency est vide. Avant d'activer le transfert d'écriture dans une session, vérifiez si votre code utilise ces instructions.

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]
LOADdéclarations pour les tables permanentes

Vous ne pouvez pas utiliser les instructions suivantes sur un cluster secondaire avec le transfert d'écriture activé.

LOAD DATA INFILE 'data.txt' INTO TABLE t1; LOAD XML LOCAL INFILE 'test.xml' INTO TABLE t1;

Vous pouvez charger des données dans une table temporaire sur un cluster secondaire. Toutefois, assurez-vous d'exécuter toutes les instructions LOAD qui font référence aux tables permanentes uniquement sur le cluster principal.

Instructions de plugin

Vous ne pouvez pas utiliser les instructions suivantes sur un cluster secondaire avec le transfert d'écriture activé.

INSTALL PLUGIN example SONAME 'ha_example.so'; UNINSTALL PLUGIN example;
SAVEPOINTdéclarations

Vous ne pouvez pas utiliser les instructions suivantes sur un cluster secondaire lorsque le transfert d'écriture est activé dans la session. Vous pouvez utiliser ces instructions sur des clusters secondaires pour lesquels le transfert d'écriture n'est pas activé, ou dans des sessions où le aurora_replica_read_consistency paramètre est vide. Avant d'activer le transfert d'écriture dans une session, vérifiez si votre code utilise ces instructions.

SAVEPOINT t1_save; ROLLBACK TO SAVEPOINT t1_save; RELEASE SAVEPOINT t1_save;

Isolation et cohérence pour le transfert d'écriture dans Aurora My SQL

Dans les sessions qui utilisent le transfert d'écriture, vous ne pouvez utiliser uniquement le niveau d'isolement REPEATABLE READ. Bien que vous puissiez également utiliser le niveau d'isolement READ COMMITTED avec des clusters en lecture seule dans des régions AWS secondaires, ce niveau d'isolement ne fonctionne pas avec le transfert d'écriture. Pour de plus amples informations sur les niveaux d'isolement REPEATABLE READ et READ COMMITTED, veuillez consulter Niveaux d'SQLisolation d'Aurora My.

Vous pouvez contrôler le degré de cohérence en lecture sur un cluster secondaire. Le niveau de cohérence en lecture détermine la durée d'attente du cluster secondaire avant chaque opération de lecture, afin de s'assurer que certaines ou toutes les modifications sont répliquées à partir du cluster principal. Vous pouvez ajuster le niveau de cohérence en lecture pour vous assurer que toutes les opérations d'écriture transférées de votre session sont visibles dans le cluster secondaire avant toute requête ultérieure. Vous pouvez également utiliser ce paramètre pour vous assurer que les requêtes sur le cluster secondaire voient toujours les mises à jour les plus récentes du cluster principal. C'est le cas même pour celles soumises par d'autres sessions ou d'autres clusters. Pour spécifier ce type de comportement pour votre application, vous choisissez une valeur pour le paramètre de niveau session aurora_replica_read_consistency.

Important

Définissez toujours le paramètre aurora_replica_read_consistency pour toute session pour laquelle vous souhaitez transférer des écritures. Dans le cas contraire, Aurora n'active pas le transfert d'écriture pour cette session. Ce paramètre a une valeur vide par défaut, alors choisissez une valeur spécifique lorsque vous utilisez ce paramètre. Le paramètre aurora_replica_read_consistency n'a un effet que sur les clusters secondaires dans lesquels le transfert d'écriture est activé.

Pour les SQL versions 2 et 3 d'Aurora My inférieures à 3.04, utilisez-les aurora_replica_read_consistency comme variable de session. Pour Aurora My SQL version 3.04 et versions ultérieures, vous pouvez l'utiliser aurora_replica_read_consistency comme variable de session ou comme paramètre de cluster de base de données.

Pour le paramètre aurora_replica_read_consistency, vous pouvez spécifier les valeurs EVENTUAL, SESSION et GLOBAL.

Au fur et à mesure que vous augmentez le niveau de cohérence, votre application passe plus de temps à attendre que les modifications soient propagées entre les AWS régions. Vous pouvez choisir l'équilibre entre le temps de réponse rapide et l'assurance que les modifications apportées à d'autres emplacements sont entièrement disponibles avant l'exécution de vos requêtes.

Lorsque la cohérence de lecture est définie surEVENTUAL, les requêtes d'une AWS région secondaire qui utilise le transfert d'écriture peuvent voir des données légèrement périmées en raison du retard de réplication. Les résultats des opérations d'écriture dans la même session ne sont pas visibles tant que l'opération d'écriture n'est pas effectuée dans la région principale et répliquée dans la région actuelle. La requête n'attend pas que les résultats mis à jour soient disponibles. Ainsi, elle peut récupérer les données plus anciennes ou les données mises à jour, en fonction de l'heure des instructions et de la durée du décalage de réplication.

Lorsque la cohérence de lecture est définie surSESSION, toutes les requêtes d'une AWS région secondaire qui utilise le transfert d'écriture voient les résultats de toutes les modifications apportées au cours de cette session. Les modifications sont visibles que la transaction soit validée ou non. Si nécessaire, la requête attend que les résultats des opérations d'écriture transférées soient répliqués dans la région actuelle. Elle n'attend pas les résultats mis à jour des opérations d'écriture effectuées dans d'autres régions ou dans d'autres sessions au sein de la région actuelle.

Lorsque la cohérence de lecture est définie surGLOBAL, une session d'une AWS région secondaire voit les modifications apportées par cette session. Il prend également en compte tous les changements engagés à la fois dans la AWS région principale et dans les autres AWS régions secondaires. Chaque requête peut attendre pendant une période qui varie en fonction du décalage de la session. La requête se poursuit lorsque le cluster secondaire up-to-date contient toutes les données validées du cluster principal, au moment où la requête a commencé.

Pour de plus amples informations sur tous les paramètres impliqués dans le transfert d'écriture, veuillez consulter Paramètres de configuration pour le transfert d'écriture dans Aurora My SQL.

Exemples d'utilisation du transfert d'écriture

Ces exemples utilisent aurora_replica_read_consistency en tant que variable de session. Pour Aurora My SQL version 3.04 et versions ultérieures, vous pouvez l'utiliser aurora_replica_read_consistency comme variable de session ou comme paramètre de cluster de base de données.

Dans l'exemple suivant, le cluster principal se trouve dans la région US East (N. Virginia). Le cluster secondaire se trouve dans la région USA Est (Ohio). L'exemple montre les effets de l'exécution d'instructions INSERT suivies d'instructionsSELECT. Selon la valeur du paramètre aurora_replica_read_consistency, les résultats peuvent différer en fonction de l'heure des instructions. Pour obtenir une plus grande cohérence, vous pouvez attendre brièvement avant d'émettre l'instruction SELECT. Sinon, Aurora peut attendre automatiquement la fin de la réplication des résultats avant d'effectuer l'instruction SELECT.

Cet exemple comporte un paramètre de cohérence en lecture de eventual. L'exécution d'une instruction INSERT immédiatement suivie d'une instruction SELECT renvoie toujours la valeur de COUNT(*). Cette valeur reflète le nombre de lignes avant l'insertion de la nouvelle ligne. L'exécution répétée de l'instruction SELECT après une courte période renvoie le nombre de lignes mis à jour. Les instructions SELECT n'attendent pas.

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)

Avec un paramètre de cohérence en lecture session, une instruction SELECT immédiatement après une instruction INSERT attend que les modifications de l'instruction INSERT soient visibles. Les instructions SELECT suivantes n'attendent pas.

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)

Le paramètre de cohérence en lecture étant toujours défini sur session, l'introduction d'une brève attente après l'exécution d'une instruction INSERT rend le nombre de lignes mis à jour disponible au moment de l'exécution de l'instruction SELECT suivante.

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)

Avec un paramètre de cohérence en lecture global, chaque instruction SELECT attend de s'assurer que toutes les modifications de données au début de l'instruction sont visibles avant d'effectuer la requête. La longueur de l'attente pour chaque instruction SELECT varie en fonction du décalage de réplication entre les clusters principal et secondaire.

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)

Exécution d'instructions en plusieurs parties avec transfert d'écriture dans Aurora My SQL

Une DML déclaration peut être composée de plusieurs parties, telles qu'une INSERT ... SELECT déclaration ou une DELETE ... WHERE déclaration. Dans ce cas, l'instruction entière est transférée vers le cluster principal pour y être exécutée.

Transactions avec transfert d'écriture dans Aurora My SQL

Le transfert de la transaction vers le cluster principal dépend du mode d'accès de la transaction. Vous pouvez spécifier le mode d'accès de la transaction à l'aide de l'instruction SET TRANSACTION ou de l'instruction START TRANSACTION. Vous pouvez également spécifier le mode d'accès aux transactions en modifiant la valeur de la variable de SQL session Aurora Mytx_read_only. Vous pouvez uniquement modifier cette valeur de session lorsque vous êtes connecté à un cluster secondaire pour lequel le transfert d'écriture est activé.

Si une transaction de longue durée n'émet aucune instruction pendant une longue période, elle peut dépasser le délai d'inactivité. La valeur par défaut de cette période est d'une minute. Vous pouvez l'augmenter jusqu'à un jour. Une transaction qui dépasse le délai d'inactivité est annulée par le cluster principal. L'instruction suivante que vous soumettez reçoit une erreur de délai d'attente. Puis Aurora restaure la transaction.

Ce type d'erreur peut se produire dans d'autres cas, lorsque le transfert d'écriture devient indisponible. Par exemple, Aurora annule toutes les transactions qui utilisent le transfert d'écriture si vous redémarrez le cluster principal ou si vous désactivez le paramètre de configuration de transfert d'écriture.

Paramètres de configuration pour le transfert d'écriture dans Aurora My SQL

Les groupes de paramètres de cluster Aurora incluent des paramètres pour la fonction de transfert d'écriture. Comme il s'agit de paramètres de cluster, toutes les instances de base de données de chaque cluster ont les mêmes valeurs pour ces variables. Les détails sur ces paramètres sont résumés dans le tableau suivant, avec des notes d'utilisation après le tableau.

Nom Portée Type Valeur par défaut Valeurs valides
aurora_fwd_master_idle_timeout(Aurora My SQL version 2) Solution internationale entier non signé 60 1–86 400
aurora_fwd_master_max_connections_pct(Aurora My SQL version 2) Globale entier non signé 10 0–90
aurora_fwd_writer_idle_timeout(Aurora My SQL version 3) Solution internationale entier non signé 60 1–86 400
aurora_fwd_writer_max_connections_pct(Aurora My SQL version 3) Globale entier non signé 10 0–90
aurora_replica_read_consistency Session Enum '' (null) EVENTUAL, SESSION, GLOBAL

Pour contrôler les demandes d'écriture entrantes à partir de clusters secondaires, utilisez ces paramètres sur le cluster principal :

  • aurora_fwd_master_idle_timeout, aurora_fwd_writer_idle_timeout : nombre de secondes pendant lesquelles le cluster principal attend l'activité d'une connexion transférée à partir d'un cluster secondaire avant de la fermer. Si la session reste inactive au-delà de cette période, Aurora l'annule.

  • aurora_fwd_master_max_connections_pct, aurora_fwd_writer_max_connections_pct : limite supérieure des connexions à la base de données que l'on peut utiliser sur une instance de base de données de rédacteur pour gérer les requêtes transmises à partir des lecteurs. Il est exprimé en pourcentage du paramètre max_connections pour l'instance de base de données du rédacteur dans le cluster principal. Par exemple, si la valeur max_connections est 800 et aurora_fwd_master_max_connections_pct ou aurora_fwd_writer_max_connections_pct 10, le rédacteur autorise un maximum de 80 sessions transférées simultanées. Ces connexions proviennent du même groupe de connexions géré par le paramètre max_connections.

    Ce paramètre s'applique uniquement sur le cluster principal, lorsqu'un ou plusieurs clusters secondaires ont le transfert d'écriture activé. Si vous diminuez la valeur, les connexions existantes ne sont pas affectées. Aurora prend en compte la nouvelle valeur du paramètre lors de la tentative de création d'une nouvelle connexion à partir d'un cluster secondaire. La valeur par défaut est 10, ce qui représente 10 % de la valeur max_connections. Si vous activez le transfert de requêtes sur l'un des clusters secondaires, ce paramètre doit avoir une valeur différente de zéro pour les opérations d'écriture à partir de clusters secondaires pour réussir. Si la valeur est zéro, les opérations d'écriture reçoivent le code d'erreur ER_CON_COUNT_ERROR avec le message Not enough connections on writer to handle your request.

Le paramètre aurora_replica_read_consistency est un paramètre au niveau de la session qui active le transfert d'écriture. Vous l'utilisez dans chaque session. Vous pouvez spécifier EVENTUAL, SESSION ou GLOBAL pour le niveau de cohérence de lecture. Pour en savoir plus sur les niveaux de cohérence, consultez la section Isolation et cohérence pour le transfert d'écriture dans Aurora My SQL. Les règles suivantes s'appliquent à ce paramètre :

  • Il s'agit d'un paramètre au niveau de la session. La valeur par défaut est '' (vide).

  • Le transfert d'écriture est seulement disponible dans une session si aurora_replica_read_consistency est défini sur EVENTUAL ou SESSION ou GLOBAL. Ce paramètre n'est pertinent que dans les instances de lecteur de clusters secondaires dont le transfert d'écriture est activé et qui se trouvent dans une base de données Aurora globale.

  • Vous ne pouvez pas définir cette variable (lorsqu'elle est vide) ou supprimer sa définition (lorsqu'elle est déjà définie) dans une transaction multi-instructions. Toutefois, vous pouvez en modifier la valeur , en passant d'une valeur valide (EVENTUAL, SESSION ou GLOBAL) à une autre valeur valide (EVENTUAL, SESSION ou GLOBAL) lors d'une telle transaction.

  • La variable ne peut pas être SET lorsque le transfert d'écriture n'est pas activé sur le cluster secondaire.

  • La définition de la variable de session sur un cluster principal n'a aucun effet. Si vous essayez de modifier cette variable sur un cluster principal, une erreur s'affiche.

CloudWatch Métriques Amazon pour le transfert d'écriture dans Aurora My SQL

Les CloudWatch métriques Amazon et les variables de SQL statut Aurora My suivantes s'appliquent au cluster principal lorsque vous utilisez le transfert d'écriture sur un ou plusieurs clusters secondaires. Ces métriques sont toutes mesurées sur l'instance de base de données d'enregistreur dans le cluster principal.

CloudWatch métrique Aurora Ma variable SQL d'état Unité Description

AuroraDMLRejectedMasterFull

Nombre

Le nombre de requêtes transférées qui sont rejetées parce que la session est pleine sur l'instance de base de données du rédacteur.

Pour Aurora My SQL version 2.

AuroraDMLRejectedWriterFull

Nombre

Le nombre de requêtes transférées qui sont rejetées parce que la session est pleine sur l'instance de base de données du rédacteur.

Pour Aurora My SQL version 3.

ForwardingMasterDMLLatency

Millisecondes

Durée moyenne de traitement de chaque DML instruction transmise sur l'instance de base de données du rédacteur.

Il n'inclut pas le temps nécessaire au cluster secondaire pour transférer la demande d'écriture, ni le temps nécessaire pour répliquer les modifications et les renvoyer au cluster secondaire.

Pour Aurora My SQL version 2.

ForwardingMasterDMLThroughput

Nombre par seconde

Nombre d'DMLinstructions transmises traitées chaque seconde par cette instance de base de données Writer.

Pour Aurora My SQL version 2.

ForwardingMasterOpenSessions

Aurora_fwd_master_open_sessions Nombre

Nombre de sessions transférées sur l'instance de base de données d'enregistreur.

Pour Aurora My SQL version 2.

Aurora_fwd_master_dml_stmt_count Nombre

Nombre total d'DMLinstructions transmises à cette instance de base de données Writer.

Pour Aurora My SQL version 2.

Aurora_fwd_master_dml_stmt_duration Microsecondes

Durée totale des DML instructions transmises à cette instance de base de données Writer.

Pour Aurora My SQL version 2.

Aurora_fwd_master_select_stmt_count Nombre

Nombre total d'instructions SELECT transférées à cette instance de base de données de rédacteur.

Pour Aurora My SQL version 2.

Aurora_fwd_master_select_stmt_duration Microsecondes

Durée totale des instructions SELECT transférées à cette instance de base de données de rédacteur.

Pour Aurora My SQL version 2.

ForwardingWriterDMLLatency

Millisecondes

Durée moyenne de traitement de chaque DML instruction transmise sur l'instance de base de données du rédacteur.

Il n'inclut pas le temps nécessaire au cluster secondaire pour transférer la demande d'écriture, ni le temps nécessaire pour répliquer les modifications et les renvoyer au cluster secondaire.

Pour Aurora My SQL version 3.

ForwardingWriterDMLThroughput

Nombre par seconde

Nombre d'DMLinstructions transmises traitées chaque seconde par cette instance de base de données Writer.

Pour Aurora My SQL version 3.

ForwardingWriterOpenSessions

Aurora_fwd_writer_open_sessions Nombre

Nombre de sessions transférées sur l'instance de base de données d'enregistreur.

Pour Aurora My SQL version 3.

Aurora_fwd_writer_dml_stmt_count Nombre

Nombre total d'DMLinstructions transmises à cette instance de base de données Writer.

Pour Aurora My SQL version 3.

Aurora_fwd_writer_dml_stmt_duration Microsecondes Durée totale des DML instructions transmises à cette instance de base de données Writer.

Aurora_fwd_writer_select_stmt_count Nombre

Nombre total d'instructions SELECT transférées à cette instance de base de données de rédacteur.

Pour Aurora My SQL version 3.

Aurora_fwd_writer_select_stmt_duration Microsecondes

Durée totale des instructions SELECT transférées à cette instance de base de données de rédacteur.

Pour Aurora My SQL version 3.

Les CloudWatch métriques et variables d'SQLétat Aurora My suivantes s'appliquent à chaque cluster secondaire. Ces métriques sont mesurées sur chaque instance de base de données de lecteur dans un cluster secondaire avec le transfert d'écriture activé.

CloudWatch métrique Aurora Ma variable SQL d'état Unité Description

ForwardingReplicaDMLLatency

Millisecondes Temps de réponse moyen du transfert DMLs sur le réplica.

ForwardingReplicaDMLThroughput

Nombre par seconde Nombre de DML relevés transmis traités par seconde.

ForwardingReplicaOpenSessions

Aurora_fwd_replica_open_sessions Nombre Nombre de sessions qui utilisent le transfert d'écriture sur une instance de base de données de lecteur.

ForwardingReplicaReadWaitLatency

Millisecondes

Temps moyen qu'une instruction SELECT sur une instance de base de données de lecteur attend pour rattraper le cluster principal.

La longueur de l'attente de l'instance de base de données du lecteur avant de traiter une requête dépend du paramètre aurora_replica_read_consistency.

ForwardingReplicaReadWaitThroughput

Nombre par seconde Nombre total d'instructions SELECT traitées chaque seconde dans toutes les sessions qui transportent des écritures.

ForwardingReplicaSelectLatency

(–) Millisecondes Latence SELECT de transmission, moyenne sur toutes les instructions SELECT transmises au cours de la période de surveillance.

ForwardingReplicaSelectThroughput

Nombre par seconde Débit d'instruction SELECT transférée par seconde, dont la moyenne est calculée au cours de la période de surveillance.

Aurora_fwd_replica_dml_stmt_count Nombre Nombre total d'DMLinstructions transmises depuis cette instance de base de données de lecteur.

Aurora_fwd_replica_dml_stmt_duration Microsecondes Durée totale de toutes les DML instructions transmises depuis cette instance de base de données de lecteur.

Aurora_fwd_replica_errors_session_limit Nombre

Nombre de sessions rejetées par le cluster principal en raison de l'une des conditions d'erreur suivantes :

  • enregistreur complet

  • Trop d'instructions transférées en cours

Aurora_fwd_replica_read_wait_count Nombre Nombre total d' read-after-write attentes sur cette instance de base de données de lecteur.

Aurora_fwd_replica_read_wait_duration Microsecondes Durée totale des attentes dues au paramètre de cohérence en lecture sur cette instance de base de données de lecteur.

Aurora_fwd_replica_select_stmt_count Nombre Nombre total d'instructions SELECT transférées à partir de cette instance de base de données de lecteur.

Aurora_fwd_replica_select_stmt_duration Microsecondes Durée totale des instructions SELECT transférées à partir de cette instance de base de données de lecteur.