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.
Themen
Ä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:
-
Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich Proxies (Proxys).
-
Wählen Sie in der Liste der Proxys den Proxy aus, dessen Einstellungen Sie ändern möchten, oder gehen Sie zur Detailseite.
-
Wählen Sie für Actions (Aktionen) die Option Modify (Ändern) aus.
-
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.
-
-
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:
-
Gehen Sie auf der Seite Proxys zur Detailseite für einen Proxy.
-
Wählen Sie für Target groups (Zielgruppen) den
default
-Link aus. Derzeit haben alle Proxys eine einzelne Zielgruppe mit dem Namendefault
. -
Wählen Sie auf der Detailseite für die Standard-Zielgruppe die Option Modify (Ändern).
-
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 einzelneSET
-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.
-
-
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-namethe_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-namethe-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-namethe-proxy
--db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-namethe-proxy
{ "Targets": [] } aws rds register-db-proxy-targets --db-proxy-namethe-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:
-
Erstellen Sie ein neues Secrets-Manager-Secret, indem Sie das unter beschriebene Verfahren verwende Datenbankanmeldedaten einrichten in AWS Secrets Manager.
-
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.
-
Ändern Sie den RDS-Proxy, um das neue Secret von Secrets Manager unter Secrets Manager Secrets hinzuzufügen.
-
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 EinstellungMaxConnectionsPercent
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
oderFLUSH 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
undLAST_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:
-
SET
Befehle verwenden. -
Verwendung von
EXECUTE
BefehlenPREPARE
DISCARD
DEALLOCATE
,, 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 wie
auto_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 fest
pg_advisory_xact_lock
, insbesondere nicht aufpg_advisory_xact_lock_shared
pg_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
BefehlenSET
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:
-
Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich Proxies (Proxys).
-
Wählen Sie den zu löschenden Proxy aus der Liste aus.
-
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-nametarget_group_name
] [--target-idscomma_separated_list
] # or [--db-instance-identifiersinstance_id
] # or [--db-cluster-identifierscluster_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