Gestion d'un RDS Proxy - Amazon Relational Database Service

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.

Gestion d'un RDS Proxy

Cette section fournit des informations sur la façon de gérer le fonctionnement et la configuration du proxy RDS. Ces procédures aident votre application à utiliser de manière optimale les connexions de base de données et à obtenir une réutilisation maximale des connexions. Plus vous tirez profit de la réutilisation des connexions, plus vous évitez une surcharge de l'UC et de la mémoire. Cela réduit la latence de votre application et permet à la base de données de dédier une plus grande partie de ses ressources au traitement des requêtes d'application.

Modification d'un RDS Proxy

Vous pouvez modifier des paramètres spécifiques associés à un proxy après sa création. Pour ce faire, modifiez le proxy lui-même, son groupe cible associé, ou les deux. Chaque proxy dispose d'un groupe cible associé.

Important

Les valeurs des champs Client authentication type (Type d'authentification client) et IAM authentication (Authentification IAM) s'appliquent à tous les secrets de Secrets Manager associés à ce proxy. Pour spécifier des valeurs différentes pour chaque secret, modifiez votre proxy en utilisant plutôt l'API AWS CLI ou l'API.

Modifications des paramètres d'un proxy
  1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, sélectionnez Proxies.

  3. Dans la liste de proxy, choisissez celui dont vous souhaitez modifier les paramètres ou accédez à sa page de détails.

  4. Pour Actions, choisissez Modifier.

  5. Saisissez ou sélectionnez les propriétés à modifier. Vous pouvez modifier les valeurs suivantes :

    • Identifiant du proxy : renommez le proxy en saisissant un nouvel identifiant.

    • Délai d'inactivité de la connexion client – Saisissez une période pour le délai d'inactivité de la connexion client.

    • Rôle IAM – Modifiez le rôle IAM utilisé pour récupérer les secrets de Secrets Manager.

    • Secrets de Secrets Manager – Ajoutez ou supprimez des secrets Secrets Manager. Ces secrets correspondent aux noms d'utilisateur et mots de passe de la base de données.

    • Client authentication type (Type d'authentification client) – (PostgreSQL uniquement) Modifiez le type d'authentification pour les connexions client au proxy.

    • IAM authentication (Authentification IAM) : exigez ou désactivez l'authentification IAM pour les connexions au proxy.

    • Exiger la Sécurité de la couche transport – Activez ou désactivez l'exigence du protocole TLS (Transport Layer Security).

    • Groupe de sécurité de VPC – Ajoutez ou supprimez des groupes de sécurité de VPC que le proxy doit utiliser.

    • Activation de la journalisation améliorée – Activez ou désactivez la journalisation améliorée.

  6. Sélectionnez Modify.

Si vous n'avez pas trouvé les paramètres répertoriés que vous souhaitez modifier, procédez comme suit pour mettre à jour le groupe cible du proxy. Le groupe cible associé à un proxy contrôle les paramètres liés aux connexions à la base de données physique. Chaque proxy dispose d'un groupe cible associé, nommé default, qui est créé automatiquement avec le proxy.

Vous pouvez uniquement modifier le groupe cible à partir de la page de détails du proxy, et non depuis la liste de la page Proxies.

Modification des paramètres d'un groupe cible proxy
  1. À partir de la page Proxies, accédez à la page des détails d'un proxy.

  2. Pour les Groupes cibles, choisissez le lien default. Actuellement, tous les proxy ont un groupe cible unique nommé default.

  3. Sur la page de détails du groupe cible par défaut, sélectionnez Modifier.

  4. Définissez de nouveaux paramètres pour les propriétés que vous pouvez modifier :

    • Base de données : choisissez une autre instance ou un autre cluster de base de données RDS.

    • Nombre maximal de connexions dans le groupe de connexions – Ajustez le pourcentage du nombre de connexions maximum disponibles que le proxy peut utiliser.

    • Filtre d'épinglage de session – (Facultatif) Choisissez un filtre d'épinglage de session. Cela permet de contourner les mesures de sécurité par défaut pour le multiplexage des connexions de base de données entre les connexions client. Actuellement, le paramètre n'est pas pris en charge pour PostgreSQL. Le seul choix estEXCLUDE_VARIABLE_SETS.

      L'activation de ce paramètre peut avoir un impact sur les variables de session d'une connexion sur les autres connexions. Cela peut entraîner des erreurs ou des problèmes d'exactitude si vos requêtes dépendent de valeurs de variables de session définies en dehors de la transaction en cours. Vous pouvez utiliser cette option après avoir vérifié que vos applications peuvent partager des connexions de base de données en toute sécurité entre les connexions client.

      Les modèles suivants peuvent être considérés comme sûrs :

      • Instructions SET dans lesquelles aucune modification n'est apportée à la valeur effective de la variable de session, c'est-à-dire qu'aucune modification n'est apportée à la variable de session.

      • Vous modifiez la valeur de la variable de session et exécutez une instruction dans la même transaction.

      Pour plus d’informations, consultez Contournement de l'épinglage.

    • Délai d'expiration d'emprunt de connexion – Ajustez l'intervalle du délai d'attente d'emprunt de connexion. Ce paramètre s'applique lorsque le nombre maximal de connexions est déjà utilisé pour le proxy. Ce paramètre permet de définir combien de temps le proxy doit attendre la disponibilité d'une connexion avant de renvoyer une erreur de dépassement de délai d'attente.

    • Requête d'initialisation – (Facultatif) Ajoutez une requête d'initialisation ou modifiez la requête actuelle. Vous pouvez spécifier une ou plusieurs instructions SQL que le proxy doit exécuter lors de l'ouverture de chaque nouvelle connexion à la base de données. Ce paramètre est généralement utilisé avec des instructions SET pour s'assurer que chaque connexion a des paramètres identiques tels que le fuseau horaire et le jeu de caractères. Pour plusieurs instructions, utilisez des points-virgules comme séparateur. Vous pouvez également inclure plusieurs variables dans une seule instruction SET, par exemple SET x=1, y=2.

    Certaines propriétés, telles que l'identifiant du groupe cible et le moteur de base de données, sont corrigées.

  5. Sélectionnez Modification du groupe cible.

Pour modifier un proxy à l'aide de AWS CLI, utilisez les commandes modify-db-proxymodify-db-proxy-target-group deregister-db-proxy-targetset register-db-proxy-targets.

Avec la commande modify-db-proxy, vous pouvez modifier des propriétés, par exemple :

  • Ensemble des secrets Secrets Manager utilisés par le proxy.

  • TLS requis ou non.

  • Délai d'expiration de la connexion client inactive.

  • Nécessité ou non de consigner des informations supplémentaires des instructions SQL pour le débogage.

  • Rôle IAM utilisé pour récupérer les secrets Secrets Manager.

  • Groupes de sécurité utilisés par le proxy.

L'exemple suivant montre comment renommer un proxy existant.

aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name

Pour modifier les paramètres liés à la connexion ou renommer le groupe cible, utilisez la commande modify-db-proxy-target-group. Actuellement, tous les proxy ont un groupe cible unique nommé default. Lorsque vous travaillez avec ce groupe cible, vous indiquez le nom du proxy et default pour le nom du groupe cible.

L'exemple suivant montre comment vérifier le paramètre MaxIdleConnectionsPercent d'un proxy, puis le modifier à l'aide du groupe cible.

aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy { "TargetGroups": [ { "Status": "available", "UpdatedDate": "2019-11-30T16:49:30.342Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 50, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } ] } aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config ' { "MaxIdleConnectionsPercent": 75 }' { "DBProxyTargetGroup": { "Status": "available", "UpdatedDate": "2019-12-02T04:09:50.420Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 75, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } }

Grâce aux commandes deregister-db-proxy-targets et register-db-proxy-targets, vous modifiez les instances de base de données RDS auxquelles le proxy est associé via son groupe cible. Actuellement, chaque proxy peut se connecter à une instance de base de données RDS (). Le groupe cible suit les détails de connexion pour toutes les instances de base de données RDS dans une configuration multi-AZ, .

L'exemple suivant commence par un proxy associé à un cluster Aurora MySQL nommé cluster-56-2020-02-25-1399. L'exemple vous explique comment modifier le proxy afin qu'il puisse se connecter à un autre cluster nommé provisioned-cluster.

Lorsque vous travaillez avec une instance de base de données RDS, sélectionnez l'option --db-instance-identifier.

L'exemple suivant modifie un proxy Aurora MySQL. Un proxy PostgreSQL Aurora dispose du port 5432.

aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [ { "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-9814" }, { "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-8898" }, { "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-1018" }, { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "cluster-56-2020-02-25-1399" }, { "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-4330" } ] } aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [] } aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster { "DBProxyTargets": [ { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "provisioned-cluster" }, { "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "gkldje" }, { "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "provisioned-1" } ] }

Pour modifier un proxy à l'aide de l'API RDS, vous devez utiliser les opérations ModifyDBProxy, ModifyDB, ProxyTargetGroup DeRegisterDB et RegisterDB. ProxyTargets ProxyTargets

Avec ModifyDBProxy, vous pouvez modifier des propriétés, par exemple :

  • Ensemble des secrets Secrets Manager utilisés par le proxy.

  • TLS requis ou non.

  • Délai d'expiration de la connexion client inactive.

  • Nécessité ou non de consigner des informations supplémentaires des instructions SQL pour le débogage.

  • Rôle IAM utilisé pour récupérer les secrets Secrets Manager.

  • Groupes de sécurité utilisés par le proxy.

Avec ModifyDBProxyTargetGroup, vous pouvez modifier les paramètres liés à la connexion ou renommer le groupe cible. Actuellement, tous les proxy ont un groupe cible unique nommé default. Lorsque vous travaillez avec ce groupe cible, vous indiquez le nom du proxy et default pour le nom du groupe cible.

Avec DeregisterDBProxyTargets etRegisterDBProxyTargets, vous modifiez l'instance de base de données RDS () à laquelle le proxy est associé via son groupe cible. Actuellement, chaque proxy peut se connecter à une instance de base de données RDS . Le groupe cible suit les détails de connexion des instances de base de données RDS dans une configuration multi-AZ .

Ajout d'un nouvel utilisateur de base de données

Dans certains cas, vous pouvez ajouter un nouvel utilisateur de base de données à une instance ou un cluster de base de données RDS qui est associé à un proxy. Le cas échéant, ajoutez ou réaffectez un secret Secrets Manager pour stocker les informations d'identification de cet utilisateur. Pour ce faire, choisissez l'une des options suivantes :

  1. Créez un nouveau secret Secrets Manager en suivant les instructions décrites dans la section Configuration des informations d'identification de base de données dans AWS Secrets Manager.

  2. Mettez à jour le rôle IAM pour permettre à RDS Proxy d'accéder au nouveau secret Secrets Manager. Pour ce faire, mettez à jour la section des ressources de la politique de rôle IAM.

  3. Modifiez le RDS Proxy pour ajouter le nouveau secret de Secrets Manager sous Secrets de Secrets Manager.

  4. Si le nouvel utilisateur remplace un utilisateur existant, mettez à jour les informations d'identification stockées dans le secret Secrets Manager du proxy pour l'utilisateur existant.

Ajouter un nouvel utilisateur de base de données à une base de données PostgreSQL

Lorsque vous ajoutez un nouvel utilisateur à votre base de données PostgreSQL, si vous avez exécuté la commande suivante :

REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;

Accordez à l'utilisateur rdsproxyadmin le privilège CONNECT afin qu'il puisse surveiller les connexions sur la base de données cible.

GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;

Vous pouvez également autoriser d'autres utilisateurs de la base de données cible à effectuer des surveillances de l'état en modifiant rdsproxyadmin pour l'utilisateur de la base de données dans la commande ci-dessus.

Modification du mot de passe d'un utilisateur de base de données

Dans certains cas, vous pouvez modifier le mot de passe d'un utilisateur de base de données d'une instance de base de données RDS associée à un proxy. Le cas échéant, mettez à jour le secret Secrets Manager correspondant avec le nouveau mot de passe.

Connexions client et connexions aux bases de données

Les connexions entre votre application et RDS Proxy sont appelées connexions client. Les connexions d'un proxy à la base de données sont appelées connexions à la base de données. Lorsque vous utilisez RDS Proxy, les connexions client s'arrêtent au niveau du proxy tandis que les connexions à la base de données sont gérées au sein de RDS Proxy.

Le regroupement des connexions côté application peut offrir l'avantage de réduire l'établissement de connexions récurrentes entre votre application et le proxy RDS.

Tenez compte des aspects de configuration suivants avant d'implémenter un pool de connexions côté application :

  • Durée de vie maximale de la connexion client : le proxy RDS impose une durée de vie maximale de 24 heures aux connexions client. Cette valeur n'est pas configurable. Configurez votre pool avec une durée de vie maximale de connexion inférieure à 24 heures afin d'éviter les interruptions inattendues de la connexion client.

  • Délai d'inactivité de la connexion client : le proxy RDS impose une durée d'inactivité maximale pour les connexions client. Configurez votre regroupement avec un délai d'inactivité inférieur au délai d'inactivité de votre connexion client pour RDS Proxy afin d'éviter les interruptions de connexion inattendues.

Le nombre maximum de connexions client configurées dans votre pool de connexions côté application ne doit pas nécessairement être limité au paramètre max_connections pour le proxy RDS.

Le regroupement des connexions client prolonge la durée de vie des connexions client. Si vos connexions sont épinglées, le regroupement des connexions client peut réduire l'efficacité du multiplexage. Les connexions client bloquées mais inactives dans le pool de connexions côté application continuent de conserver une connexion à la base de données et empêchent la réutilisation de la connexion à la base de données par d'autres connexions client. Consultez les journaux de votre proxy pour vérifier si vos connexions sont épinglées.

Configuration des paramètres de connexion

Pour ajuster le regroupement de connexion RDS Proxy, vous pouvez modifier les paramètres suivants :

IdleClientTimeout

Vous pouvez spécifier la durée pendant laquelle une connexion client peut être inactive avant que le proxy ne la ferme. La valeur par défaut est de 1 800 secondes (30 minutes).

Une connexion client est considérée comme inactive lorsque l'application ne soumet aucune nouvelle demande dans le délai défini après l'achèvement de la demande précédente. La connexion à la base de données sous-jacente reste ouverte et est renvoyée au regroupement de connexions. Ainsi, elle peut être réutilisée pour de nouvelles connexions client. Si vous souhaitez que le proxy supprime de manière proactive les connexions périmées, réduisez le délai d'expiration des connexions client inactives. Si votre charge de travail établit des connexions fréquentes avec le proxy, augmentez le délai d'inactivité des connexions client afin de réduire les coûts liés à l'établissement des connexions.

Ce paramètre est représenté par le champ Délai d'expiration de la connexion client inactive dans la console RDS et par le IdleClientTimeout paramètre dans l'API AWS CLI et. Pour savoir comment modifier la valeur du champ Idle client connection timeout (Délai d'inactivité de la connexion client) dans la console RDS, veuillez consulter AWS Management Console. Pour savoir comment modifier la valeur du IdleClientTimeout paramètre, consultez la commande CLI modify-db-proxyou l'opération d'API ModifyDBProxy.

MaxConnectionsPercent

Vous pouvez limiter le nombre de connexions qu'un RDS Proxy peut établir avec la base de données cible. Vous indiquez la limite, sous forme de pourcentage, des connexions maximales disponibles pour votre base de données. Ce paramètre est représenté par le champ Nombre maximum de connexions du pool de connexions dans la console RDS et par le MaxConnectionsPercent paramètre dans l'API AWS CLI et.

La valeur MaxConnectionsPercent est exprimée en pourcentage du paramètre max_connections pour l'instance de base de données RDS utilisé par le groupe cible. Le proxy ne crée pas toutes ces connexions à l'avance. Ce paramètre permet au proxy d'établir ces connexions selon les besoins de la charge de travail.

Par exemple, pour une cible de base de données enregistrée avec max_connections définies sur 1 000 et MaxConnectionsPercent défini sur 95, RDS Proxy définit 950 connexions comme la limite supérieure pour les connexions simultanées à cette cible de base de données.

Le fait que votre charge de travail atteigne le nombre maximum de connexions à la base de données autorisées a souvent pour effet secondaire d'augmenter la latence globale des requêtes, ainsi que d'augmenter la métrique DatabaseConnectionsBorrowLatency. Vous pouvez surveiller les connexions à la base de données actuellement utilisées et le nombre total de connexions autorisées en comparant les métriques DatabaseConnections et MaxDatabaseConnectionsAllowed.

Pour définir ce paramètre, tenez compte des bonnes pratiques suivantes :

  • Prévoyez une marge de connexion suffisante pour les modifications du modèle de la charge de travail. Il est recommandé de définir le paramètre afin qu'il soit au moins 30 % supérieur à votre utilisation surveillée maximale récente. Comme RDS Proxy redistribue les quotas de connexion à la base de données entre plusieurs nœuds, les modifications de la capacité interne peuvent nécessiter une marge d'au moins 30 % pour les connexions supplémentaires afin d'éviter des latences d'emprunt plus importantes.

  • RDS Proxy réserve un certain nombre de connexions pour une surveillance active afin de permettre un basculement rapide, le routage du trafic et les opérations internes. La métrique MaxDatabaseConnectionsAllowed n'inclut pas ces connexions réservées. Elle représente le nombre de connexions disponibles pour répondre à la charge de travail et peut être inférieure à la valeur dérivée du paramètre MaxConnectionsPercent.

    Valeurs MaxConnectionsPercent minimales recommandées

    • db.t3.small : 30

    • db.t3.medium ou supérieur : 20

Pour savoir comment modifier la valeur du champ Connection pool maximum connections (Connexions maximales au groupe de connexion) dans la console RDS, veuillez consulter AWS Management Console. Pour savoir comment modifier la valeur du MaxConnectionsPercent paramètre, consultez la commande CLI modify-db-proxy-target-group ou l'opération d'API ProxyTargetGroupModifyDB.

Pour en savoir plus sur les limites de connexion aux bases de données, veuillez consulter Nombre maximal de connexions aux bases de données.

MaxIdleConnectionsPercent

Vous pouvez contrôler le nombre de connexions aux bases de données inactives que RDS Proxy peut conserver dans le groupe de connexion. Par défaut, le proxy RDS considère qu'une connexion à la base de données de son pool est inactive lorsqu'aucune activité n'a été enregistrée pendant cinq minutes.

Vous indiquez la limite, sous forme de pourcentage, des connexions maximales disponibles pour votre base de données. La valeur par défaut est de 50 % de MaxConnectionsPercent et la limite supérieure est la valeur de MaxConnectionsPercent. Une valeur élevée permet au proxy de laisser ouvert un pourcentage élevé de connexions inactives à la base de données. Avec une valeur faible, le proxy ferme un pourcentage élevé de connexions de base de données inactives. Si vos charges de travail sont imprévisibles, pensez à définir une valeur élevée pour MaxIdleConnectionsPercent. Cela signifie que RDS Proxy peut prendre en charge les vagues d'activité sans ouvrir de nombreuses nouvelles connexions aux bases de données.

Ce paramètre est représenté par le MaxIdleConnectionsPercent paramètre de DBProxyTargetGroup in the AWS CLI et dans l'API. Pour savoir comment modifier la valeur du MaxIdleConnectionsPercent paramètre, consultez la commande CLI modify-db-proxy-target-group ou l'opération d'API ProxyTargetGroupModifyDB.

Pour en savoir plus sur les limites de connexion aux bases de données, veuillez consulter Nombre maximal de connexions aux bases de données.

ConnectionBorrowTimeout

Vous pouvez choisir combien de temps le RDS Proxy doit attendre la disponibilité d'utilisation d'une connexion à une base de données dans le groupe de connexion avant de renvoyer une erreur de dépassement de délai d'attente. La durée par défaut est de 120 secondes. Ce paramètre s'applique lorsque le nombre maximal de connexions est atteint et qu'aucune connexion n'est disponible dans le groupe de connexion. Cela s'applique également lorsqu'aucune instance de base de données appropriée n'est disponible pour traiter la demande, par exemple lorsqu'une opération de basculement est en cours. À l'aide de ce paramètre, vous pouvez définir le meilleur délai d'attente pour votre application sans modifier le délai d'attente des requêtes dans le code de votre application.

Ce paramètre est représenté par le champ Connection borrow timeout dans la console RDS ou par le ConnectionBorrowTimeout paramètre de DBProxyTargetGroup l'API AWS CLI or. Pour savoir comment modifier la valeur du champ Connection borrow timeout (Délai d'expiration d'emprunt de connexion) dans la console RDS, veuillez consulter AWS Management Console. Pour savoir comment modifier la valeur du ConnectionBorrowTimeout paramètre, consultez la commande CLI modify-db-proxy-target-group ou l'opération d'API ProxyTargetGroupModifyDB.

Contournement de l'épinglage

Le multiplexage est plus efficace lorsque les demandes de base de données ne dépendent pas des informations d'état issues de demandes précédentes. Dans ce cas, RDS Proxy peut réutiliser une connexion à la fin de chaque transaction. Ces informations d'état incluent la plupart des variables et des paramètres de configuration que vous pouvez modifier à l'aide des instructions SET ou SELECT. Les transactions SQL sur une connexion client peuvent se multiplexer entre les connexions de base de données sous-jacentes par défaut.

Vos connexions au proxy peuvent entrer dans un état appelé épinglage. Lorsqu'une connexion est épinglée, chaque transaction ultérieure utilise la même connexion de base de données sous-jacente jusqu'à la fin de la session. De même, les autres connexions client ne peuvent pas réutiliser cette connexion à la base de données tant que la session n'est pas terminée. La session se termine lorsque la connexion client est supprimée.

RDS Proxy épingle automatiquement une connexion client à une connexion de base de données spécifique lorsqu'il détecte un changement d'état de session qui n'est pas approprié pour d'autres sessions. L'épinglage réduit l'efficacité de la réutilisation des connexions. Si la totalité, ou presque, de vos connexions font l'objet d'un épinglage, pensez à modifier le code de votre application ou votre charge de travail afin de réduire les conditions à l'origine de l'épinglage.

Par exemple, votre application modifie une variable de session ou un paramètre de configuration. Dans ce cas, les instructions ultérieures peuvent reposer sur la nouvelle variable ou le nouveau paramètre pour entrer en vigueur. Ainsi, lorsque le RDS Proxy traite des demandes de modification des variables ou des paramètres de configuration de session, il épingle cette session à la connexion de base de données. De cette manière, l'état de session reste en vigueur pour toutes les transactions ultérieures de la même session.

Pour les moteurs de bases de données, cette règle ne s'applique pas à tous les paramètres que vous pouvez définir. RDS Proxy suit certaines instructions et variables. Ainsi, le proxy RDS n'épingle pas la session lorsque vous les modifiez. Dans ce cas, RDS Proxy réutilise la connexion uniquement pour les autres sessions dont les valeurs de ces paramètres sont identiques. Pour plus de détails sur ce que RDS Proxy suit pour un moteur de base de données, consultez ce qui suit :

Ce que RDS Proxy suit pour les bases de données RDS for SQL Server

Voici les instructions SQL Server suivies par RDS Proxy :

  • USE

  • SET ANSI_NULLS

  • SET ANSI_PADDING

  • SET ANSI_WARNINGS

  • SET ARITHABORT

  • SET CONCAT_NULL_YIELDS_NULL

  • SET CURSOR_CLOSE_ON_COMMIT

  • SET DATEFIRST

  • SET DATEFORMAT

  • SET LANGUAGE

  • SET LOCK_TIMEOUT

  • SET NUMERIC_ROUNDABORT

  • SET QUOTED_IDENTIFIER

  • SET TEXTSIZE

  • SET TRANSACTION ISOLATION LEVEL

Ce que RDS Proxy suit pour les bases de données RDS for MariaDB et RDS for MySQL

Voici les instructions MariaDB et MySQL suivies par RDS Proxy :

  • DROP DATABASE

  • DROP SCHEMA

  • USE

Voici les variables MySQL et MariaDB suivies par RDS Proxy :

  • AUTOCOMMIT

  • AUTO_INCREMENT_INCREMENT

  • CHARACTER SET (or CHAR SET)

  • CHARACTER_SET_CLIENT

  • CHARACTER_SET_DATABASE

  • CHARACTER_SET_FILESYSTEM

  • CHARACTER_SET_CONNECTION

  • CHARACTER_SET_RESULTS

  • CHARACTER_SET_SERVER

  • COLLATION_CONNECTION

  • COLLATION_DATABASE

  • COLLATION_SERVER

  • INTERACTIVE_TIMEOUT

  • NAMES

  • NET_WRITE_TIMEOUT

  • QUERY_CACHE_TYPE

  • SESSION_TRACK_SCHEMA

  • SQL_MODE

  • TIME_ZONE

  • TRANSACTION_ISOLATION (or TX_ISOLATION)

  • TRANSACTION_READ_ONLY (or TX_READ_ONLY)

  • WAIT_TIMEOUT

Minimiser l'épinglage

Le réglage des performances RDS Proxy entraîne une tentative d'optimisation de la réutilisation des connexions au niveau de la transaction (multiplexage) en réduisant l'épinglage.

Vous pouvez minimiser l'épinglage en procédant comme suit :

  • Évitez les requêtes de base de données inutiles qui pourraient provoquer l'épinglage.

  • Définissez les variables et les paramètres de configuration de manière cohérente sur toutes les connexions. De cette façon, les sessions ultérieures sont plus susceptibles de réutiliser les connexions qui ont ces paramètres particuliers.

    En revanche, pour PostgreSQL, la définition d'une variable entraîne l'épinglage de la session.

  • Pour une base de données de la famille de moteur MySQL, appliquez un filtre d'épinglage de session au proxy. Vous pouvez configurer certains types d'opérations pour qu'elles n'épinglent pas la session si vous savez que cela n'affecte pas le bon fonctionnement de votre application.

  • Découvrez la fréquence de l'épinglage en surveillant la CloudWatch métrique DatabaseConnectionsCurrentlySessionPinned Amazon. Pour plus d'informations à ce sujet et sur d'autres CloudWatch mesures, consultezSurveillance des métriques du proxy RDS avec Amazon CloudWatch.

  • Si vous utilisez des instructions SET pour exécuter une initialisation identique pour chaque connexion client, vous pouvez conserver le multiplexage au niveau de la transaction. Dans ce cas, vous déplacez les instructions qui définissent l'état initial de la session vers la requête d'initialisation utilisée par un proxy. Cette propriété est une chaîne contenant une ou plusieurs instructions SQL, séparées par des points-virgules.

    Par exemple, vous pouvez définir une requête d'initialisation pour un proxy qui établit certains paramètres de configuration. RDS Proxy applique ensuite ces paramètres dès qu'il configure une nouvelle connexion pour ce proxy. Vous pouvez supprimer les instructions SET correspondantes de votre code d'application, afin qu'elles n'interfèrent pas avec le multiplexage au niveau de la transaction.

    Pour les métriques relatives à la fréquence d'épinglage d'un proxy, veuillez consulter Surveillance des métriques du proxy RDS avec Amazon CloudWatch.

Conditions qui entraînent l'épinglage pour toutes les familles de moteurs

Le proxy épingle la session à la connexion en cours dans les situations suivantes où le multiplexage peut entraîner un comportement inattendu :

  • Le proxy épingle la session si la taille de texte de l'instruction est supérieure à 16 Ko.

Conditions qui entraînent l'épinglage pour RDS for Microsoft SQL Server

Pour RDS for SQL Server, les interactions suivantes entraînent également l'épinglage :

  • Utilisation de plusieurs ensembles de résultats actifs (MARS). Pour plus d'informations sur MARS, consultez la documentation Microsoft SQL Server.

  • Utilisation de la communication DTC (Distributed Transaction Coordinator).

  • Création de tables temporaires, de transactions, de curseurs ou d'instructions préparées.

  • À l'aide des instructions SET suivantes :

    • SET ANSI_DEFAULTS

    • SET ANSI_NULL_DFLT

    • SET ARITHIGNORE

    • SET DEADLOCK_PRIORITY

    • SET FIPS_FLAGGER

    • SET FMTONLY

    • SET FORCEPLAN

    • SET IDENTITY_INSERT

    • SET NOCOUNT

    • SET NOEXEC

    • SET OFFSETS

    • SET PARSEONLY

    • SET QUERY_GOVERNOR_COST_LIMIT

    • SET REMOTE_PROC_TRANSACTIONS

    • SET ROWCOUNT

    • SET SHOWPLAN_ALL, SHOWPLAN_TEXT et SHOWPLAN_XML

    • SET STATISTICS

    • SET XACT_ABORT

Conditions qui entraînent l'épinglage pour RDS for MariaDB et RDS for MySQL

Pour MariaDB et MySQL, les interactions suivantes sont également à l'origine du pinning :

  • Le proxy épingle la session en cas d'instructions de verrouillage de table LOCK TABLE, LOCK TABLES ou FLUSH TABLES WITH READ LOCK explicites.

  • La création de verrous nommés à l'aide de GET_LOCK entraîne le proxy à épingler la session.

  • Le proxy épingle la session lors de la définition d'une variable utilisateur ou d'une variable système (à quelques exceptions près). Si cette situation réduit trop la réutilisation de votre connexion, optez pour SET des opérations qui ne provoquent pas d'épinglage. Pour plus d'informations sur la manière de procéder en définissant la propriété des filtres d'épinglage de session, consultez Création d'un RDS Proxy et Modification d'un RDS Proxy.

  • Le proxy épingle la session lors de la création d'une table temporaire. De cette façon, le contenu de la table temporaire est conservé tout au long de la session, sans tenir compte des limites de transaction.

  • L'appel des fonctions ROW_COUNT, FOUND_ROWS et LAST_INSERT_ID entraîne parfois un épinglage.

  • Le proxy épingle la session en cas d'instructions préparées. Cette règle s'applique si l'instruction préparée utilise du texte SQL ou le protocole binaire.

  • RDS Proxy n'épingle pas les connexions lorsque vous utilisez SET LOCAL.

  • L'appel de procédures et de fonctions stockées ne provoque pas d'épinglage. RDS Proxy ne détecte aucun changement d'état de session résultant de tels appels. Assurez-vous que votre application ne modifie pas l'état de session dans les routines stockées si vous comptez sur cet état de session pour qu'il persiste dans toutes les transactions. Par exemple, le proxy RDS n'est actuellement pas compatible avec une procédure stockée qui crée une table temporaire qui persiste dans toutes les transactions.

Si vous avez des connaissances avancées sur le comportement de votre application, vous pouvez ignorer le comportement d'épinglage de certaines instructions d'application. Pour ce faire, sélectionnez l'option Filtres d'épinglage de session lors de la création du proxy. Actuellement, vous pouvez désactiver l'épinglage de session pour définir des variables de session et des paramètres de configuration.

Conditions qui entraînent l'épinglage pour RDS for PostgreSQL

Pour PostgreSQL, les interactions suivantes provoquent également l'épinglage :

  • À l'aide de SET commandes.

  • Utilisation PREPARE des EXECUTE commandes DISCARDDEALLOCATE,, ou pour gérer les instructions préparées.

  • Création de séquences, de tables ou de vues temporaires.

  • Déclarer des curseurs.

  • Suppression de l'état de session.

  • Écoute sur un canal de notification.

  • Chargement d'un module de bibliothèque tel queauto_explain.

  • Manipulation de séquences à l'aide de fonctions telles que nextval et. setval

  • Interaction avec les verrous à l'aide de fonctions telles que pg_advisory_lock etpg_try_advisory_lock.

  • Définition d'un paramètre ou réinitialisation d'un paramètre à sa valeur par défaut. Plus précisément, utiliser SET des set_config commandes et pour attribuer des valeurs par défaut aux variables de session.

  • L'appel de procédures et de fonctions stockées ne provoque pas d'épinglage. RDS Proxy ne détecte aucun changement d'état de session résultant de tels appels. Assurez-vous que votre application ne modifie pas l'état de session dans les routines stockées si vous comptez sur cet état de session pour qu'il persiste dans toutes les transactions. Par exemple, le proxy RDS n'est actuellement pas compatible avec une procédure stockée qui crée une table temporaire qui persiste dans toutes les transactions.

Suppression d'un RDS Proxy

Vous pouvez supprimer un proxy lorsque vous n'en avez plus besoin. Vous pouvez également supprimer un proxy si vous mettez hors service l'instance de base de données ou le cluster qui lui est associé.

Suppression d'un proxy
  1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, sélectionnez Proxies.

  3. Choisissez le proxy à supprimer de la liste.

  4. Sélectionnez Suppression du proxy.

Pour supprimer un proxy de base de données, utilisez la AWS CLI commande delete-db-proxy. Pour supprimer les associations associées, utilisez également la deregister-db-proxy-targetscommande.

aws rds delete-db-proxy --name proxy_name
aws rds deregister-db-proxy-targets --db-proxy-name proxy_name [--target-group-name target_group_name] [--target-ids comma_separated_list] # or [--db-instance-identifiers instance_id] # or [--db-cluster-identifiers cluster_id]

Pour supprimer un proxy de base de données, appelez la fonction d'API Amazon RDS DeleteDBProxy. Pour supprimer des éléments et des associations associés, vous pouvez également appeler les fonctions DeleteDB ProxyTargetGroup et DeRegisterDB. ProxyTargets