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
Rubriques
- Disponibilité de la région et de la version du transfert d'écriture dans Aurora My SQL
- Activation du transfert d'écriture dans Aurora My SQL
- Vérifier si le transfert d'écriture est activé sur un cluster secondaire dans Aurora My SQL
- Application et SQL compatibilité avec le transfert d'écriture dans Aurora My SQL
- Isolation et cohérence pour le transfert d'écriture dans Aurora My SQL
- Exécution d'instructions en plusieurs parties avec transfert d'écriture dans Aurora My SQL
- Transactions avec transfert d'écriture dans Aurora My SQL
- Paramètres de configuration pour le transfert d'écriture dans Aurora My SQL
- CloudWatch Métriques Amazon pour le transfert d'écriture dans Aurora My SQL
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 à 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 du AWS CLI, utilisez l'--enable-global-write-forwarding
option. 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-forwarding
option 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, le principal et le secondaire AWS Régions.
# 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
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 \ --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
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 le volet AWS Management Console, dans l'onglet Configuration de la page de détails du cluster, le statut Activé pour le transfert global de lecture et d'écriture s'affiche.
Pour connaître l'état du paramètre global de transfert d'écriture pour tous vos clusters, exécutez ce qui suit AWS CLI commande.
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
etSELECT FOR UPDATE
. -
Instructions
PREPARE
etEXECUTE
.
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 READ COMMITTED
d'isolation avec des clusters en lecture seule dans le secondaire AWS Régions, ce niveau d'isolation 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
.
À mesure que vous augmentez le niveau de cohérence, votre application passe plus de temps à attendre que les modifications soient propagées entre 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
, requêtes dans un secondaire AWS La région qui utilise le transfert d'écriture peut 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 requête secondaire AWS La région qui utilise le transfert d'écriture voit 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 dans un environnement secondaire AWS La région voit les modifications apportées par cette session. Il voit également toutes les modifications validées à la fois depuis le principal AWS Région et autres établissements secondaires AWS
Régions. 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 session transaction_read_only
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ètremax_connections
pour l'instance de base de données du rédacteur dans le cluster principal. Par exemple, si la valeurmax_connections
est 800 etaurora_fwd_master_max_connections_pct
ouaurora_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ètremax_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'erreurER_CON_COUNT_ERROR
avec le messageNot 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 surEVENTUAL
ouSESSION
ouGLOBAL
. 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
ouGLOBAL
) à une autre valeur valide (EVENTUAL
,SESSION
ouGLOBAL
) 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 |
---|---|---|---|
|
– | 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. |
|
– | 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. |
|
– | 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. |
|
– | 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. |
|
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 Pour Aurora My SQL version 2. |
– |
Aurora_fwd_master_select_stmt_duration |
Microsecondes |
Durée totale des instructions Pour Aurora My SQL version 2. |
|
– | 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. |
|
– | 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. |
|
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 |
– |
Aurora_fwd_writer_select_stmt_duration |
Microsecondes |
Durée totale des instructions 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 |
---|---|---|---|
|
– | Millisecondes | Temps de réponse moyen du transfert DMLs sur le réplica. |
|
– | Nombre par seconde | Nombre de DML relevés transmis traités chaque seconde. |
|
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. |
|
– | Millisecondes |
Temps moyen qu'une instruction 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 |
|
– | Nombre par seconde | Nombre total d'instructions SELECT traitées chaque seconde dans toutes les sessions qui transportent des écritures. |
|
(–) | Millisecondes | Latence SELECT de transmission, moyenne sur toutes les instructions SELECT transmises au cours de la période de surveillance. |
|
– | 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 :
|
– |
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. |