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 local pour Aurora Postgre SQL
À l'aide des sections suivantes, vous pouvez vérifier si le transfert d'écriture local est activé dans un cluster de bases de données, consulter les considérations de compatibilité et voir les paramètres configurables et la configuration de l'authentification. Ces informations vous fournissent les informations nécessaires pour utiliser efficacement la fonctionnalité de transfert d'écriture locale d'Aurora PostgreSQL.
Note
Lorsqu'une instance d'enregistreur dans un cluster utilisant le transfert d'écriture local est redémarrée, toutes les transactions et requêtes actives et transférées sur les instances de lecteur utilisant le transfert d'écriture local sont automatiquement fermées. Une fois que l'instance d'enregistreur est à nouveau disponible, vous pouvez réessayer ces transactions.
Vérifier si le transfert d'écriture local est activé sur un cluster de bases de données
Pour déterminer si vous pouvez utiliser le transfert d'écriture local dans un cluster de base de données, vérifiez que l'attribut du cluster est LocalWriteForwardingStatus
défini surenabled
.
Dans l' AWS Management Console onglet Configuration de la page de détails du cluster, le statut Activé pour le transfert d'écriture de répliques de lecture locales s'affiche.
Pour connaître l'état du paramètre de transfert d'écriture local pour tous vos clusters, exécutez la AWS CLI commande suivante.
aws rds describe-db-clusters \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}' [ { "LocalWriteForwardingStatus": "enabled", "DBClusterIdentifier": "write-forwarding-test-cluster-1" }, { "LocalWriteForwardingStatus": "disabled", "DBClusterIdentifier": "write-forwarding-test-cluster-2" }, { "LocalWriteForwardingStatus": "requested", "DBClusterIdentifier": "test-global-cluster-2" }, { "LocalWriteForwardingStatus": "null", "DBClusterIdentifier": "aurora-postgresql-v2-cluster" } ]
Un cluster de bases de données peut avoir les valeurs suivantes pour LocalWriteForwardingStatus
:
-
disabled
— Le transfert d'écriture local est désactivé. -
disabling
— Le transfert d'écriture local est en train d'être désactivé. -
enabled
— Le transfert d'écriture local est activé. -
enabling
— Le transfert d'écriture local est en cours d'activation. -
null
— Le transfert d'écriture local n'est pas disponible pour ce cluster de base de données. -
requested
— Le transfert d'écriture local a été demandé, mais il n'est pas encore actif.
Limitations du transfert d'écriture local dans Aurora Postgre SQL
Certaines instructions ne sont pas autorisées ou peuvent produire des résultats périmés lorsque vous les utilisez dans Aurora Postgre SQL avec le transfert d'écriture. En outre, les fonctions définies par l'utilisateur et les procédures définies par l'utilisateur ne sont pas prises en charge. Par conséquent, le EnableLocalWriteForwarding
paramètre est désactivé par défaut pour les clusters de base de données. Avant de l'activer, vérifiez que votre code d'application n'est affecté par aucune de ces restrictions.
Vous pouvez utiliser les types d'SQLinstructions suivants avec le transfert d'écriture :
-
Des instructions du langage de manipulation des données (DML)
INSERT
, telles queDELETE
, etUPDATE
-
Instructions
SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }
-
Instructions
PREPARE
etEXECUTE
-
Instructions
EXPLAIN
comprenant les instructions de cette liste -
Une DML déclaration peut être composée de plusieurs parties, telles qu'une
INSERT ... SELECT
déclaration ou uneDELETE ... WHERE
déclaration. Dans ce cas, l'instruction entière est transférée vers l'instance de base de données d'enregistreur pour y être exécutée.
Les types d'SQLinstructions suivants ne sont pas pris en charge par le transfert d'écriture :
Note
Ces instructions peuvent être utilisées implicitement par vous dans votre application ou déduites par le protocole SQL Postgre. Par exemple, la gestion des SQL exceptions PL/ peut entraîner l'utilisation deSAVEPOINT, qui n'est pas une instruction prise en charge.
-
Déclarations du langage de définition des données (DDL)
-
ANALYZE
-
CLUSTER
-
COPY
-
Curseurs : les curseurs ne sont pas pris en charge. Assurez-vous donc de les fermer avant d'utiliser le transfert d'écriture local.
-
Fonctions définies par l'utilisateur et procédures définies par l'utilisateur.
-
GRANT
|REVOKE
|REASSIGN OWNED
|SECURITY LABEL
-
LOCK
-
SAVEPOINT
-
SELECT INTO
-
SET CONSTRAINTS
-
TRUNCATE
-
VACUUM
-
LISTEN / NOTIFY
-
Commandes de validation en deux phases :
PREPARE TRANSACTION
,,COMMIT PREPARED
ROLLBACK PREPARED
-
Mises à jour des séquences :
nextval()
,setval()
Paramètres par défaut pour le transfert d'écriture
Les groupes de paramètres du cluster Aurora incluent les paramètres de la fonctionnalité de transfert d'écriture local. 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.
Paramètre | Portée | Type | Valeur par défaut | Valeurs valides |
---|---|---|---|---|
apg_write_forward.connect_timeout |
Session | secondes | 30 | 0–2147483647 |
apg_write_forward.consistency_mode |
Session | enum | Session | SESSION , EVENTUAL , GLOBAL , et OFF |
apg_write_forward.idle_in_transaction_session_timeout |
Session | millisecondes | 86400000 | 0–2147483647 |
apg_write_forward.idle_session_timeout |
Session | millisecondes | 300 000 | 0–2147483647 |
apg_write_forward.max_forwarding_connections_percent |
Globale | int | 25 | 1–100 |
Le paramètre apg_write_forward.max_forwarding_connections_percent
est la limite supérieure des emplacements de connexion à la base de données qui peuvent être utilisés pour traiter les requêtes transmises par les lecteurs. Il est exprimé en pourcentage du max_connections
paramètre de l'instance de base de données Writer. Par exemple, si la valeur de max_connections
est 800
et celle de apg_write_forward.max_forwarding_connections_percent
est 10
, l'enregistreur 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 à l'instance de base de données du rédacteur lorsque le transfert d'écriture local est activé sur le cluster.
Utilisez les paramètres suivants pour contrôler les demandes de transfert d'écriture locales :
-
apg_write_forward.consistency_mode
— Paramètre au niveau de la session qui contrôle le degré de cohérence de lecture sur une réplique de lecture. Les valeurs valides sontSESSION
,EVENTUAL
,GLOBAL
ouOFF
. Par défaut, cette valeur indiqueSESSION
. La définition de la valeur surOFF
désactive le transfert d'écriture local dans la session. Pour en savoir plus sur les niveaux de cohérence, consultez Cohérence et isolation pour le transfert d'écriture local dans Aurora Postgre SQL. Ce paramètre n'est pertinent que dans les instances de lecteur pour lesquelles le transfert d'écriture local est activé. apg_write_forward.connect_timeout
— Le nombre maximal de secondes pendant lequel la réplique en lecture attend lors de l'établissement d'une connexion à l'instance de base de données du rédacteur avant d'abandonner. Une valeur de0
correspond à un temps d'attente indéfini.apg_write_forward.idle_in_transaction_session_timeout
— Le nombre de millisecondes pendant lesquelles l'instance de base de données Writer attend une activité sur une connexion transférée depuis une réplique en lecture contenant une transaction ouverte avant de la fermer. Si la session reste inactive au-delà de cette durée, Aurora y met fin. La valeur0
désactive le délai d'attente.apg_write_forward.idle_session_timeout
— Le nombre de millisecondes pendant lesquelles l'instance de base de données Writer attend une activité sur une connexion transférée depuis une réplique en lecture avant de la fermer. Si la session reste inactive au-delà de cette durée, Aurora y met fin. La valeur0
désactive le délai d'attente.
utilisateur rdswriteforward
rdswriteforwarduser
Il s'agit d'un utilisateur que nous utiliserons pour établir une connexion entre la réplique en lecture et l'instance de base de données Writer.
Note
rdswriteforwarduser
hérite de ses CONNECT privilèges sur les bases de données clients via le PUBLIC rôle. Si les privilèges du PUBLIC rôle sont révoqués, vous aurez besoin de GRANT CONNECT privilèges pour les bases de données vers lesquelles vous devez transférer les écritures.