Verwalten eines RDS-Proxy - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwalten eines RDS-Proxy

Dieser Abschnitt enthält Informationen zur Verwaltung des Betriebs und der Konfiguration des RDS-Proxys. Diese Verfahren helfen Ihrer Anwendung, Datenbankverbindungen möglichst effizient zu nutzen und eine maximale Wiederverwendung der Verbindung zu erzielen. Je mehr Sie die Wiederverwendung der Verbindung nutzen können, desto mehr CPU- und Arbeitsspeicher-Overhead können Sie sparen. Dies reduziert wiederum die Latenz für Ihre Anwendung und ermöglicht es der Datenbank, mehr Ressourcen für die Verarbeitung von Anwendungsanforderungen zu verwenden.

Ändern eines RDS Proxy

Sie können bestimmte Einstellungen ändern, die einem Proxy zugeordnet sind, nachdem Sie den Proxy erstellt haben. Dazu ändern Sie den Proxy selbst, die zugehörige Zielgruppe oder beides. Jedem Proxy ist eine Zielgruppe zugeordnet.

Wichtig

Die Werte in den Feldern Client authentication type (Client-Authentifizierungstyp) und IAM authentication (IAM-Authentifizierung) gelten für alle Secrets-Manager-Secrets, die diesem Proxy zugeordnet sind. Um für jedes Geheimnis unterschiedliche Werte anzugeben, ändern Sie Ihren Proxy, indem Sie stattdessen die AWS CLI oder die API verwenden.

So ändern Sie die Einstellungen für einen Proxy:
  1. Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Proxies (Proxys).

  3. Wählen Sie in der Liste der Proxys den Proxy aus, dessen Einstellungen Sie ändern möchten, oder gehen Sie zur Detailseite.

  4. Wählen Sie für Actions (Aktionen) die Option Modify (Ändern) aus.

  5. Geben Sie die zu ändernden Eigenschaften ein, oder wählen Sie sie aus. Sie können folgende Formen angeben:

    • Proxy-Identifikator - Benennen Sie den Proxy um, indem Sie einen neuen Identifikator eingeben.

    • Zeitüberschreitung für Client-Verbindungsleerlauf— Geben Sie einen Zeitraum für das Timeout für die Clientleerlauf ein.

    • IAM-Rolle - Ändern Sie die IAM-Rolle, die zum Abrufen der Geheimnisse von Secrets Manager verwendet wird.

    • Secrets Manager-Secrets— Hinzufügen oder entfernen Sie Secrets Manager Geheimnisse. Diese Secrets entsprechen Datenbankbenutzernamen und Passwörtern.

    • Client authentication type (Client-Authentifizierungstyp) – (nur PostgreSQL) Ändern Sie den Authentifizierungstyp für Client-Verbindungen zum Proxy.

    • IAM authentication (IAM-Authentifizierung) – Verlangen oder unterbinden Sie die IAM-Authentifizierung für Verbindungen mit dem Proxy.

    • Require Transport Layer Security— Aktivieren oder deaktivieren Sie die Anforderung für Transport Layer Security (TLS).

    • VPC-Sicherheitsgruppe - Fügen Sie VPC-Sicherheitsgruppen hinzu oder entfernen Sie sie, damit der Proxy sie verwenden kann.

    • Aktivieren der erweiterten Protokollierung— Aktivieren oder deaktivieren Sie die erweiterte Protokollierung.

  6. Wählen Sie Ändern aus.

Wenn Sie die Einstellungen, die Sie ändern möchten, in der Liste nicht gefunden haben, verwenden Sie das folgende Verfahren, um die Zielgruppe für den Proxy zu aktualisieren. Die Zielgruppe, die einem Proxy zugeordnet ist, steuert die Einstellungen für die physischen Datenbankverbindungen. Jedem Proxy ist eine Zielgruppe mit dem Namen default zugeordnet, die automatisch zusammen mit dem Proxy erstellt wird.

Sie können die Zielgruppe nur über die Proxy-Detailseite ändern, nicht über die Liste auf der Seite Proxies (Proxys).

So ändern Sie die Einstellungen für eine Proxy-Zielgruppe:
  1. Gehen Sie auf der Seite Proxys zur Detailseite für einen Proxy.

  2. Wählen Sie für Target groups (Zielgruppen) den default-Link aus. Derzeit haben alle Proxys eine einzelne Zielgruppe mit dem Namen default.

  3. Wählen Sie auf der Detailseite für die Standard-Zielgruppe die Option Modify (Ändern).

  4. Wählen Sie neue Einstellungen für die Eigenschaften aus, die Sie ändern können:

    • Datenbank – Wählen Sie einen anderen Aurora-Cluster aus.

    • Maximale Verbindungen des Verbindungspools - Legen Sie fest, wie viel Prozent der maximal verfügbaren Verbindungen der Proxy nutzen kann.

    • Vortrags-Anheftungsfilter – Wählen Sie optional einen Vortrags-Anheftungsfilter aus. Dadurch werden die standardmäßigen Sicherheitsmaßnahmen für das Multiplexing von Datenbankverbindungen über Client-Verbindungen hinweg umgangen. Derzeit wird die Einstellung für PostgreSQL nicht unterstützt. Die einzige Wahl ist. EXCLUDE_VARIABLE_SETS

      Die Aktivierung dieser Einstellung kann dazu führen, dass sich Sitzungsvariablen einer Verbindung auf andere Verbindungen auswirken. Dies kann zu Fehlern oder Problemen mit der Korrektheit führen, wenn Ihre Abfragen von Sitzungsvariablenwerten abhängen, die außerhalb der aktuellen Transaktion festgelegt wurden. Erwägen Sie, diese Option zu verwenden, nachdem Sie sich vergewissert haben, dass Ihre Anwendungen Datenbankverbindungen über mehrere Client-Verbindungen gemeinsam nutzen können.

      Die folgenden Muster können als sicher angesehen werden:

      • SET-Anweisungen, bei denen der effektive Wert der Sitzungsvariablen nicht geändert wird, d. h. dass keine Änderung an der Sitzungsvariablen vorgenommen wird.

      • Sie ändern den Wert der Sitzungsvariablen und führen eine Anweisung in derselben Transaktion aus.

      Weitere Informationen finden Sie unter Vermeiden des Fixierens.

    • Connection borrow timeout— Passen Sie das Timeout-Intervall der Verbindung an. Diese Einstellung gilt, wenn für den Proxy bereits die maximale Anzahl von Verbindungen verwendet wird. Diese Einstellung legt fest, wie lange der Proxy wartet, bis eine Verbindung verfügbar ist, bevor ein Timeout-Fehler zurückgegeben wird.

    • Initialisierungsabfrage— (Optional) Fügen Sie eine Initialisierungsabfrage hinzu oder ändern Sie die aktuelle. Sie können eine oder mehrere SQL-Anweisungen für die Ausführung durch den Proxy beim Öffnen jeder neuen Datenbankverbindung festlegen. Diese Einstellung wird normalerweise mit SET-Anweisungen verwendet, um sicherzustellen, dass jede Verbindung identische Einstellungen wie Zeitzone und Zeichensatz hat. Verwenden Sie für mehrere Anweisungen Semikola als Trennzeichen. Sie können auch mehrere Variablen in eine einzelne SET-Anweisung einschließen, z. B. SET x=1, y=2.

    Sie können bestimmte Eigenschaften, z. B. die Zielgruppenkennung und die Datenbank-Engine, nicht ändern.

  5. Wählen Sie Modify target group (Zielgruppe ändern).

Um einen Proxy mithilfe von zu ändern, verwenden Sie die Befehle modify-db-proxy AWS CLI, modify-db-proxy-target-group, deregister-db-proxy-targets und register-db-proxy-targets.

Mit dem Befehl modify-db-proxy können Sie Eigenschaften wie die folgenden ändern:

  • Der Satz von Secrets Manager-Secrets, die vom Proxy verwendet werden.

  • Ob TLS erforderlich ist.

  • Das Timeout für Client-Leerlauf.

  • Ob zusätzliche Informationen aus SQL-Anweisungen zum Debuggen protokolliert werden sollen.

  • Die IAM-Rolle, die zum Abrufen von Secrets Manager-Secrets verwendet wird.

  • Die vom Proxy verwendeten Sicherheitsgruppen.

Das folgende Beispiel zeigt, wie ein vorhandener Proxy umbenannt wird.

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

Um verbindungsbezogene Einstellungen zu ändern oder die Zielgruppe umzubenennen, verwenden Sie den Befehl modify-db-proxy-target-group. Derzeit haben alle Proxys eine einzelne Zielgruppe mit dem Namen default. Bei der Arbeit mit dieser Zielgruppe geben Sie den Namen des Proxys und default für den Namen der Zielgruppe an.

Das folgende Beispiel zeigt, wie Sie zuerst die MaxIdleConnectionsPercent-Einstellung für einen Proxy überprüfen und dann mithilfe der Zielgruppe ändern.

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

Mit den Befehlen deregister-db-proxy-targets und register-db-proxy-targets ändern Sie, welchen Aurora-DB-Clustern der Proxy über die Zielgruppe zugeordnet ist. Derzeit kann jeder Proxy eine Verbindung zu einem Aurora-DB-Cluster der herstellen. Die Zielgruppe verfolgt die Verbindungsdetails für alle , alle DB-Instances in einem Aurora-Cluster.

Das folgende Beispiel beginnt mit einem Proxy, der einem Aurora MySQL-Cluster mit dem Namen zugeordnet is cluster-56-2020-02-25-1399. Das Beispiel zeigt, wie der Proxy so geändert wird, dass er eine Verbindung zu einem anderen Cluster namens herstellen kan provisioned-cluster.

Wenn Sie mit einem Aurora-DB-Cluster arbeiten, geben Sie die Option --db-cluster-identifier an.

Im folgenden Beispiel wird ein Aurora MySQL-Proxy geändert. Ein Aurora PostgreSQL-Proxy hat 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" } ] }

Um einen Proxy mithilfe der RDS-API zu ändern, verwenden Sie die Operationen ModifyDBProxy, ModifyDB ProxyTargetGroup, ProxyTargetsDeregisterDB und RegisterDB. ProxyTargets

Mit ModifyDBProxy können Sie Eigenschaften wie die folgenden ändern:

  • Der Satz von Secrets Manager-Secrets, die vom Proxy verwendet werden.

  • Ob TLS erforderlich ist.

  • Das Timeout für Client-Leerlauf.

  • Ob zusätzliche Informationen aus SQL-Anweisungen zum Debuggen protokolliert werden sollen.

  • Die IAM-Rolle, die zum Abrufen von Secrets Manager-Secrets verwendet wird.

  • Die vom Proxy verwendeten Sicherheitsgruppen.

Mit ModifyDBProxyTargetGroup können Sie verbindungsbezogene Einstellungen ändern oder die Zielgruppe umbenennen. Derzeit haben alle Proxys eine einzelne Zielgruppe mit dem Namen default. Bei der Arbeit mit dieser Zielgruppe geben Sie den Namen des Proxys und default für den Namen der Zielgruppe an.

Mit DeregisterDBProxyTargets und ändern SieRegisterDBProxyTargets, mit welchem Aurora-Cluster der der Proxy über seine Zielgruppe verknüpft ist. Derzeit kann jeder Proxy eine Verbindung mit einem Aurora-DB-Cluster herstellen. Die Zielgruppe verfolgt die Verbindungsdetails für die DB-Instances in einem Aurora-Cluster.

Hinzufügen eines neuen Datenbankbenutzers

In einigen Fällen können Sie einen neuen Datenbankbenutzer zu einem Aurora-Cluster mit Proxy-Zuordnung hinzufügen. Fügen Sie dazu ein Secrets Manager-Secret hinzu, um die Anmeldeinformationen für diesen Benutzer zu speichern, oder verwenden Sie ein Secret neu. Wählen Sie dazu eine der folgenden Optionen:

  1. Erstellen Sie ein neues Secrets-Manager-Secret, indem Sie das unter beschriebene Verfahren verwende Datenbankanmeldedaten einrichten in AWS Secrets Manager.

  2. Aktualisieren Sie die IAM-Rolle, um RDS Proxy Zugriff auf das neue Secrets Manager-Geheimnis zu gewähren. Aktualisieren Sie dazu den Ressourcenabschnitt der IAM-Rollenrichtlinie.

  3. Ändern Sie den RDS-Proxy, um das neue Secret von Secrets Manager unter Secrets Manager Secrets hinzuzufügen.

  4. Wenn der neue Benutzer an die Stelle eines vorhandenen Benutzers tritt, aktualisieren Sie die Anmeldeinformationen, die im Secrets Manager-Secret des Proxys für den vorhandenen Benutzer gespeichert sind.

Hinzufügen eines neuen Datenbankbenutzers zu einer PostgreSQL-Datenbank

Wenn Sie Ihrer PostgreSQL-Datenbank einen neuen Benutzer hinzufügen, wenn Sie den folgenden Befehl ausgeführt haben:

REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;

Gewähren Sie dem Benutzer rdsproxyadmin die CONNECT-Berechtigung, damit der Benutzer Verbindungen in der Zieldatenbank überwachen kann.

GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;

Sie können auch anderen Zieldatenbankbenutzern die Durchführung von Zustandsprüfungen ermöglichen, indem Sie im obigen Befehl rdsproxyadmin auf den Datenbankbenutzer ändern.

Ändern des Passworts für einen Datenbankbenutzer

In einigen Fällen können Sie das Passwort für einen Datenbankbenutzer in einem Aurora-Cluster mit Proxy-Zuordnung ändern. Aktualisieren Sie dazu das entsprechende Secrets Manager-Secret mit dem neuen Passwort.

Client- und Datenbankverbindungen

Verbindungen von Ihrer Anwendung zum RDS-Proxy werden als Client-Verbindungen bezeichnet. Verbindungen von einem Proxy zur Datenbank sind Datenbankverbindungen. Bei Verwendung von RDS-Proxy werden Client-Verbindungen am Proxy beendet, während Datenbankverbindungen innerhalb des RDS-Proxys verwaltet werden.

Anwendungsseitiges Verbindungspooling kann den Vorteil bieten, dass der wiederkehrende Verbindungsaufbau zwischen Ihrer Anwendung und dem RDS-Proxy reduziert wird.

Berücksichtigen Sie die folgenden Konfigurationsaspekte, bevor Sie einen anwendungsseitigen Verbindungspool implementieren:

  • Maximale Lebensdauer der Client-Verbindung: RDS Proxy erzwingt eine maximale Lebensdauer von Client-Verbindungen von 24 Stunden. Dieser Wert kann nicht konfiguriert werden. Konfigurieren Sie Ihren Pool mit einer maximalen Verbindungsdauer von weniger als 24 Stunden, um unerwartete Verbindungsabbrüche beim Client zu vermeiden.

  • Timeout im Leerlauf der Client-Verbindung: Der RDS-Proxy erzwingt eine maximale Leerlaufzeit für Client-Verbindungen. Konfigurieren Sie Ihren Pool mit einem Timeout für inaktive Verbindungen, der niedriger ist als die Einstellung für das Leerlaufzeitlimit für Client-Verbindungen für den RDS-Proxy, um unerwartete Verbindungsabbrüche zu vermeiden.

Die maximale Anzahl von Client-Verbindungen, die in Ihrem anwendungsseitigen Verbindungspool konfiguriert sind, muss nicht auf die Einstellung max_connections für den RDS-Proxy beschränkt sein.

Das Pooling von Client-Verbindungen führt zu einer längeren Lebensdauer der Client-Verbindung. Wenn es bei Ihren Verbindungen zum Pinning kommt, kann das Pooling von Client-Verbindungen die Effizienz des Multiplexings verringern. Clientverbindungen, die im anwendungsseitigen Verbindungspool angeheftet, aber inaktiv sind, behalten weiterhin eine Datenbankverbindung bei und verhindern, dass die Datenbankverbindung von anderen Clientverbindungen wiederverwendet wird. Überprüfen Sie Ihre Proxyprotokolle, um zu überprüfen, ob es bei Ihren Verbindungen zu Pinning kommt.

Anmerkung

RDS-Proxy schließt Datenbankverbindungen nach 24 Stunden, wenn sie nicht mehr verwendet werden. Der Proxy führt diese Aktion unabhängig vom Wert der Einstellung für maximale Leerlaufverbindungen aus.

Konfigurieren der Verbindungseinstellungen

Um das Verbindungs-Pooling von RDS Proxy anzupassen, können Sie die folgenden Einstellungen ändern:

IdleClientTimeout

Sie können angeben, wie lange eine Client-Verbindung inaktiv sein kann, bevor der Proxy sie schließt. Der Standardwert ist 1.800 Sekunden (30 Minuten).

Eine Client-Verbindung gilt als inaktiv, wenn die Anwendung innerhalb der angegebenen Zeit nach Abschluss der vorherigen Anforderung keine neue Anforderung absendet. Die zugrunde liegende Datenbankverbindung bleibt offen und wird an den Verbindungspool zurückgegeben. Somit ist sie für neue Clientverbindungen verfügbar. Wenn Sie möchten, dass der Proxy proaktiv veraltete Verbindungen entfernt und so das Timeout für inaktive Client-Verbindungen verringert. Wenn Ihr Workload häufig Verbindungen mit dem Proxy herstellt, erhöhen Sie das Timeout für inaktive Client-Verbindungen, um die Kosten für den Verbindungsaufbau zu sparen.

Diese Einstellung wird durch das Feld Timeout für die Verbindung bei inaktiven Clients in der RDS-Konsole und durch die IdleClientTimeout Einstellung in der AWS CLI und der API dargestellt. Informationen dazu, wie Sie den Wert des Felds Idle client connection timeout (Zeitüberschreitung bei Client-Verbindungsinaktivität) in der RDS-Konsole ändern, finden Sie unter AWS Management Console. Informationen dazu, wie Sie den Wert der Einstellung IdleClientTimeout ändern, finden Sie unter dem CLI-Befehl modify-db-proxy oder der API-Operation ModifyDBProxy.

MaxConnectionsProzent

Sie können die Anzahl der Verbindungen beschränken, die ein RDS Proxy mit der Zieldatenbank herstellen kann. Sie geben das Limit als Prozentsatz der maximal für Ihre Datenbank verfügbaren Verbindungen an. Diese Einstellung wird durch das Feld Maximale Anzahl an Verbindungen für den Verbindungspool in der RDS-Konsole und durch die MaxConnectionsPercent Einstellung in der AWS CLI und der API dargestellt.

Der Wert MaxConnectionsPercent wird als Prozentsatz der Einstellung max_connections für den Aurora-DB-Cluster ausgedrückt, die von der Zielgruppe verwendet wird. Der Proxy erstellt nicht alle diese Verbindungen im Voraus. Diese Einstellung ermöglicht es dem Proxy, diese Verbindungen so einzurichten, wie es der Workload benötigt.

Beispielsweise legt RDS Proxy für ein registriertes Datenbankziel, für das max_connections auf 1000 und MaxConnectionsPercent auf 95 festgelegt ist, 950 Verbindungen als Obergrenze für gleichzeitige Verbindungen mit diesem Datenbankziel fest.

Ein häufiger Nebeneffekt, der auftritt, wenn Ihre Workload die maximale Anzahl zulässiger Datenbankverbindungen erreicht, ist ein Anstieg der allgemeinen Abfragelatenz in Verbindung mit einer Erhöhung der Metrik DatabaseConnectionsBorrowLatency. Sie können die aktuell verwendeten Datenbankverbindungen und die Gesamtzahl der zulässigen Datenbankverbindungen überwachen, indem Sie die Metriken DatabaseConnections und MaxDatabaseConnectionsAllowed vergleichen.

Beachten Sie für das Festlegen dieses Parameters die folgenden bewährten Methoden:

  • Sorgen Sie für ausreichend Verbindungsspielraum für Änderungen des Workload-Musters. Es wird empfohlen, den Parameter mindestens 30 % über Ihrer zuletzt überwachten maximalen Nutzung einzustellen. Da RDS Proxy die Kontingente für Datenbankverbindungen auf mehrere Knoten neu verteilt, können interne Kapazitätsänderungen mindestens 30 % Spielraum für zusätzliche Verbindungen erfordern, um erhöhte Ausleihlatenzen zu vermeiden.

  • RDS Proxy reserviert eine bestimmte Anzahl von Verbindungen für die aktive Überwachung, um schnelles Failover, Weiterleitung von Datenverkehr und interne Operationen zu unterstützen. Die Metrik MaxDatabaseConnectionsAllowed umfasst diese reservierten Verbindungen nicht. Sie stellt die Anzahl der Verbindungen dar, die für den Workload verfügbar sind, und kann niedriger sein als der aus der Einstellung MaxConnectionsPercent abgeleitete Wert.

    Die empfohlenen MaxConnectionsPercent Mindestwerte lauten wie folgt:

    • db.t3.small: 100

    • db.t3.medium: 55

    • db.t3.large: 35

    • db.r3.large oder höher: 20

    Wenn mehrere Ziel-Instances bei RDS Proxy registriert sind, z. B. ein Aurora-Cluster mit Leserknoten, legen Sie den Mindestwert auf der Grundlage der kleinsten registrierten Instance fest.

Informationen dazu, wie Sie den Wert des Felds Connection pool maximum connections (Max. Verbindungen Verbindungspool) in der RDS-Konsole ändern, finden Sie unter AWS Management Console. Informationen zum Ändern des Werts der MaxConnectionsPercent Einstellung finden Sie im CLI-Befehl modify-db-proxy-target-group oder in der API-Operation ModifyDB Group. ProxyTarget

Wichtig

Wenn der DB-Cluster Teil einer globalen Datenbank mit aktivierter Schreibweiterleitung ist, reduzieren Sie den MaxConnectionsPercent-Wert Ihres Proxys um das Kontingent, das der Schreibweiterleitung zugewiesen ist. Das Kontingent für die Schreibweiterleitung ist im DB-Cluster-Parameter aurora_fwd_writer_max_connections_pct festgelegt. Informationen zur Schreibweiterleitung finden Sie unter Verwenden der Schreibweiterleitung in einer Amazon Aurora globalen Datenbank.

Informationen zu Datenbankverbindungslimits finden Sie unter Maximale Verbindungen zu einer Aurora-MySQL-DB-Instance und Maximale Verbindungen zu einer Aurora-PostgreSQL-DB-Instance.

MaxIdleConnectionsPercent

Sie können die Anzahl inaktiver Datenbankverbindungen festlegen, die RDS Proxy im Verbindungspool behalten kann. Standardmäßig betrachtet RDS Proxy eine Datenbankverbindung in seinem Pool als inaktiv, wenn fünf Minuten lang keine Aktivität auf der Verbindung stattgefunden hat.

Der MaxIdleConnectionsPercent Wert wird als Prozentsatz der max_connections Einstellung für die Zielgruppe der RDS-DB-Instance ausgedrückt. Der Standardwert ist 50 Prozent von MaxConnectionsPercent und die Obergrenze ist der Wert MaxConnectionsPercent. Wenn beispielsweise 80 istMaxConnectionsPercent, dann MaxIdleConnectionsPercent ist der Standardwert 40.

Bei einem hohen Wert lässt der Proxy einen hohen Prozentsatz an ungenutzten Datenbankverbindungen offen. Bei einem niedrigen Wert schließt der Proxy einen hohen Prozentsatz von inaktiven Datenbankverbindungen. Wenn Ihre Workloads unvorhersehbar sind, sollten Sie erwägen, einen hohen Wert für MaxIdleConnectionsPercent festzulegen. Dies bedeutet, dass RDS-Proxy Aktivitätsspitzen verarbeiten kann, ohne viele neue Datenbankverbindungen zu öffnen.

Diese Einstellung wird durch die MaxIdleConnectionsPercent Einstellung von DBProxyTargetGroup in der AWS CLI und der API dargestellt. Informationen zum Ändern des Werts der MaxIdleConnectionsPercent Einstellung finden Sie im CLI-Befehl modify-db-proxy-target-group oder in der API-Operation ModifyDB Group. ProxyTarget

Informationen zu Datenbankverbindungslimits finden Sie unter Maximale Verbindungen zu einer Aurora-MySQL-DB-Instance und Maximale Verbindungen zu einer Aurora-PostgreSQL-DB-Instance.

ConnectionBorrowTimeout

Sie können angeben, wie lange RDS Proxy warten soll, bis eine Datenbankverbindung im Verbindungspool verfügbar ist, bevor ein Timeout-Fehler zurückgegeben wird. Standardmäßig sind 120 Sekunden festgelegt. Diese Einstellung greift, wenn die maximale Anzahl von Verbindungen erreicht ist und daher keine Verbindungen im Verbindungspool verfügbar sind. Es gilt auch, wenn keine geeignete Datenbankinstanz für die Bearbeitung der Anfrage verfügbar ist, z. B. wenn ein Failover-Vorgang ausgeführt wird. Mit dieser Einstellung können Sie die beste Wartezeit für Ihre Anwendung festlegen, ohne das Abfragetimeout in Ihrem Anwendungscode zu ändern.

Diese Einstellung wird durch das Feld Timeout für die Verbindungsausleihe in der RDS-Konsole oder durch die ConnectionBorrowTimeout Einstellung DBProxyTargetGroup in der AWS CLI OR-API dargestellt. Informationen dazu, wie Sie den Wert des Felds Connection borrow timeout (Zeitüberschreitung für die Verbindung) in der RDS-Konsole ändern, finden Sie unter AWS Management Console. Informationen zum Ändern des Werts der ConnectionBorrowTimeout Einstellung finden Sie im CLI-Befehl modify-db-proxy-target-group oder in der API-Operation ModifyDB Group. ProxyTarget

Vermeiden des Fixierens

Multiplexing ist effizienter, wenn Datenbankanforderungen nicht auf Statusinformationen aus früheren Anforderungen angewiesen sind. In diesem Fall kann RDS Proxy eine Verbindung zum Abschluss jeder Transaktion wiederverwenden. Beispiele für solche Zustandsinformationen sind die meisten Variablen und Konfigurationsparameter, die Sie durch SET-oder SELECT-Anweisungen ändern können. SQL-Transaktionen auf einer Clientverbindung können standardmäßig zwischen zugrunde liegenden Datenbankverbindungen Multiplexing durchführen.

Ihre Verbindungen zum Proxy können einen Status eingeben, der als Pinning (Fixieren) bezeichnet wird. Wenn eine Verbindung angeheftet wird, verwendet jede spätere Transaktion dieselbe zugrunde liegende Datenbankverbindung, bis die Sitzung beendet ist. Andere Clientverbindungen können diese Datenbankverbindung auch erst dann wieder verwenden, wenn die Sitzung beendet ist. Die Sitzung wird beendet, wenn die Clientverbindung unterbrochen wird.

RDS Proxy heftet automatisch eine Clientverbindung an eine bestimmte DB-Verbindung an, wenn eine Sitzungsstatusänderung erkannt wird, die für andere Sitzungen nicht geeignet ist. Das Fixieren verringert die Effektivität der Wiederverwendung der Verbindung. Wenn alle oder fast alle Verbindungen fixiert sind, können Sie Ihren Anwendungscode oder Ihre Workload ändern, um dafür zu sorgen, dass Fixierungen weniger erforderlich sind.

Ihre Anwendung ändert beispielsweise eine Sitzungsvariable oder einen Konfigurationsparameter. In diesem Fall können sich spätere Anweisungen darauf verlassen, dass die neue Variable oder der neue Parameter wirksam ist. Wenn also RDS Proxy Anforderungen verarbeitet, um Sitzungsvariablen oder Konfigurationseinstellungen zu ändern, wird diese Sitzung an die DB-Verbindung fixiert. Auf diese Weise bleibt der Sitzungsstatus für alle späteren Transaktionen in derselben Sitzung gültig.

Bei Datenbank-Engines gilt diese Regel nicht für alle Parameter, die Sie festlegen können. RDS Proxy verfolgt bestimmte Anweisungen und Variablen. Daher fixiert RDS Proxy die Sitzung nicht, wenn Sie sie ändern. In diesem Fall verwendet RDS Proxy nur die Verbindung für andere Sitzungen erneut, die dieselben Werte für diese Einstellungen haben. Die Listen der verfolgten Anweisungen und Variablen für Aurora MySQL finden Sie unter Welche Daten RDS-Proxy für Aurora-MySQL-Datenbanken verfolgt.

Welche Daten RDS-Proxy für Aurora-MySQL-Datenbanken verfolgt

Im Folgenden sind die MySQL-Anweisungen aufgeführt, die RDS Proxy verfolgt:

  • DROP DATABASE

  • DROP SCHEMA

  • USE

Im Folgenden sind die MySQL-Variablen aufgeführt, die RDS Proxy verfolgt:

  • 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

Minimieren des Fixierens

Die Leistungsoptimierung für RDS Proxy beinhaltet den Versuch, die Wiederverwendung von Verbindungen auf Transaktionsebene (Multiplexing) zu maximieren, indem das Fixieren minimiert wird.

Sie können das Fixieren wie folgt minimieren:

  • Vermeiden Sie unnötige Datenbankanforderungen, die Anheften (Pinning) verursachen könnten.

  • Legen Sie Variablen und Konfigurationseinstellungen konsistent über alle Verbindungen hinweg fest. Auf diese Weise verwenden spätere Sitzungen häufiger Verbindungen, die über diese speziellen Einstellungen verfügen.

    Wenn für PostgreSQL jedoch eine Variable festgelegt wird, wird die Sitzung durch Pinning fixiert.

  • Wenden Sie bei einer MySQL-Engine-Familiendatenbank einen Sitzungs-Pinning-Filter auf den Proxy an. Sie können bestimmte Arten von Operationen vom Fixieren der Sitzung ausnehmen, wenn Sie wissen, dass dies den korrekten Betrieb Ihrer Anwendung nicht beeinträchtigt.

  • Sehen Sie sich anhand der CloudWatch Amazon-Metrik DatabaseConnectionsCurrentlySessionPinned an, wie häufig das Anheften erfolgt. Informationen zu dieser und anderen CloudWatch Kennzahlen finden Sie unterÜberwachen von RDS-Proxy-Metriken mit Amazon CloudWatch.

  • Wenn Sie SET-Anweisungen verwenden, um eine identische Initialisierung für jede Clientverbindung durchzuführen, können Sie dies tun, während Sie das Multiplexing auf Transaktionsebene beibehalten. In diesem Fall verschieben Sie die Anweisungen, die den ursprünglichen Sitzungsstatus einrichten, in die Initialisierungsabfrage, die von einem Proxy verwendet wird. Diese Eigenschaft ist eine Zeichenfolge, die eine oder mehrere SQL-Anweisungen enthält, die durch Semikola getrennt sind.

    Beispielsweise können Sie eine Initialisierungsabfrage für einen Proxy definieren, der bestimmte Konfigurationsparameter festlegt. RDS Proxy wendet dann diese Einstellungen an, wenn eine neue Verbindung für diesen Proxy eingerichtet wird. Sie können die entsprechenden SET-Anweisungen aus Ihrem Anwendungscode entfernen, damit sie das Multiplexing auf Transaktionsebene nicht beeinträchtigen.

    Metriken zur Häufigkeit des Pinnings für einen Proxy finden Sie unter Überwachen von RDS-Proxy-Metriken mit Amazon CloudWatch.

Bedingungen, die für alle Engine-Familien zum Pinning führen

Der Proxy fixiert die Sitzung an der aktuellen Verbindung in den folgenden Situationen an, in denen Multiplexing unerwartetes Verhalten verursachen kann:

  • Jede Anweisung mit einer Textgröße über 16 KB bewirkt, dass der Proxy die Sitzung fixiert.

Bedingungen, die das Fixieren für Aurora MySQL verursachen

Bei MySQL verursachen die folgenden Interaktionen ein Pinning:

  • Die expliziten MySQL-Anweisungen LOCK TABLE, LOCK TABLES oder FLUSH TABLES WITH READ LOCK bewirken, dass der Proxy ein Pinning der Sitzung vornimmt.

  • Durch Erstellen benannter Sperren mit GET_LOCK wird bewirkt, dass der Proxy ein Pinning der Sitzung vornimmt.

  • Wenn Sie eine Benutzervariable oder eine Systemvariable festlegen (mit einigen Ausnahmen), wird der Proxy die Sitzung fixieren. Wenn diese Situation die Wiederverwendung Ihrer Verbindung zu stark einschränkt, wählen Sie SET Operationen aus, die kein Pinning verursachen. Weitere Informationen dazu, wie Sie dies tun, indem Sie die Eigenschaft „Session pinning filters“ festlegen, finden Sie unter Erstellen eines RDS Proxy und Ändern eines RDS Proxy.

  • Beim Erstellen einer temporären Tabelle fixiert der Proxy die Sitzung. Auf diese Weise wird der Inhalt der temporären Tabelle während der gesamten Sitzung beibehalten, unabhängig von den Transaktionsgrenzen.

  • Der Aufruf der Funktionen ROW_COUNT, FOUND_ROWS und LAST_INSERT_ID verursacht manchmal Pinning.

    Die genauen Umstände, unter denen diese Funktionen Pinning verursachen, können sich zwischen Aurora-MySQL-Versionen unterscheiden, die mit MySQL 5.7 kompatibel sind.

  • Vorbereitete Anweisungen bewirken, dass der Proxy die Sitzung fixiert. Diese Regel bestimmt, ob die vorbereitete Anweisung SQL-Text oder das Binärprotokoll verwendet.

  • RDS Proxy pingt keine Verbindungen an, wenn Sie SET LOCAL verwenden.

  • Das Aufrufen von gespeicherten Prozeduren und gespeicherten Funktionen verursacht kein Pinning. RDS Proxy erkennt keine Änderungen des Sitzungsstatus, die aus solchen Aufrufen resultieren. Stellen Sie sicher, dass Ihre Anwendung den Sitzungsstatus in gespeicherten Routinen nicht ändert, wenn Sie darauf angewiesen sind, dass dieser Sitzungsstatus transaktionsübergreifend beibehalten wird. Beispielsweise ist RDS Proxy derzeit nicht mit einer gespeicherten Prozedur kompatibel, die eine temporäre Tabelle erstellt, die für alle Transaktionen beibehalten wird.

Wenn Sie über eingehende Kenntnisse über das Verhalten Ihrer Anwendung verfügen, können Sie das Pinning-Verhalten für bestimmte Anwendungsanweisungen überspringen. Dazu wählen Sie beim Erstellen des Proxys die Option Sitzungs-Pinning-Filter. Derzeit können Sie das Sitzungs-Pinning für das Festlegen von Sitzungsvariablen und Konfigurationseinstellungen deaktivieren.

Bedingungen, die das Fixieren für Aurora PostgreSQL verursachen

Für PostgreSQL verursachen die folgenden Interaktionen eine Fixierung:

  • SETBefehle verwenden.

  • Verwendung von EXECUTE Befehlen PREPARE DISCARDDEALLOCATE,, oder zur Verwaltung von vorbereiteten Anweisungen.

  • Temporäre Sequenzen, Tabellen oder Ansichten erstellen

  • Cursor deklarieren.

  • Der Sitzungsstatus wird verworfen.

  • Abhören auf einem Benachrichtigungskanal.

  • Laden eines Bibliotheksmoduls wieauto_explain.

  • Manipulieren von Sequenzen mit Funktionen wie nextval undsetval.

  • Interaktion mit Sperren mithilfe von Funktionen wie pg_advisory_lock undpg_try_advisory_lock.

    Anmerkung

    RDS Proxy legt keine Sicherheitssperren auf Transaktionsebene festpg_advisory_xact_lock, insbesondere nicht auf pg_advisory_xact_lock_sharedpg_try_advisory_xact_lock, undpg_try_advisory_xact_lock_shared.

  • Einstellung eines Parameters oder Zurücksetzen eines Parameters auf seine Standardwerte Insbesondere die Verwendung von set_config Befehlen SET und zum Zuweisen von Standardwerten zu Sitzungsvariablen.

  • Das Aufrufen von gespeicherten Prozeduren und gespeicherten Funktionen verursacht kein Pinning. RDS Proxy erkennt keine Änderungen des Sitzungsstatus, die aus solchen Aufrufen resultieren. Stellen Sie sicher, dass Ihre Anwendung den Sitzungsstatus in gespeicherten Routinen nicht ändert, wenn Sie darauf angewiesen sind, dass dieser Sitzungsstatus transaktionsübergreifend beibehalten wird. Beispielsweise ist RDS Proxy derzeit nicht mit einer gespeicherten Prozedur kompatibel, die eine temporäre Tabelle erstellt, die für alle Transaktionen beibehalten wird.

Löschen eines RDS Proxy

Sie können einen Proxy löschen, wenn Sie ihn nicht mehr benötigen. Oder Sie können einen Proxy löschen, wenn Sie die zugehörige DB-Instance oder den zugehörigen Cluster außer Betrieb nehmen.

So löschen Sie einen Proxy:
  1. Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Proxies (Proxys).

  3. Wählen Sie den zu löschenden Proxy aus der Liste aus.

  4. Wählen Sie Delete Proxy (Proxy löschen).

Um einen DB-Proxy zu löschen, verwenden Sie den AWS CLI Befehl delete-db-proxy. Um zugehörige Zuordnungen zu entfernen, verwenden Sie auch den Befehl deregister-db-proxy-targets .

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]

Um einen DB-Proxy zu löschen, rufen Sie die Amazon RDS-API-Funktion DeleteDBProxy auf. Um verwandte Elemente und Verknüpfungen zu löschen, rufen Sie auch die Funktionen DeleteDB Group und DeregisterDB auf. ProxyTarget ProxyTargets