Utilisation du transfert d'écriture local pour Aurora Postgre SQL - 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 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, et UPDATE

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

  • Instructions PREPARE et EXECUTE

  • 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 une DELETE ... 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 sont SESSION, EVENTUAL, GLOBAL ou OFF. Par défaut, cette valeur indique SESSION. La définition de la valeur sur OFF 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 de 0 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 valeur 0 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 valeur 0 désactive le délai d'attente.

utilisateur rdswriteforward

rdswriteforwarduserIl 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

rdswriteforwarduserhé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.