Behebung von Verbindungsproblemen für Aurora My SQL RDS - 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.

Behebung von Verbindungsproblemen für Aurora My SQL RDS

Die Sicherstellung einer zuverlässigen Konnektivität zwischen Ihren Anwendungen und Ihrer RDS DB-Instance ist entscheidend für den reibungslosen Betrieb Ihrer Workloads. Verbindungsprobleme können jedoch aufgrund verschiedener Faktoren auftreten, z. B. aufgrund von Netzwerkkonfigurationen, Authentifizierungsproblemen oder Ressourcenbeschränkungen. Dieser Leitfaden soll einen umfassenden Ansatz zur Behebung von Verbindungsproblemen mit Aurora My SQL bietenSQL.

Identifizieren von Datenbankverbindungsproblemen für Aurora My SQL RDS

Die Identifizierung der spezifischen Kategorie des Verbindungsproblems kann dazu beitragen, die möglichen Ursachen einzugrenzen und den Fehlerbehebungsprozess zu erleichtern. Für jede Kategorie sind möglicherweise unterschiedliche Ansätze und Techniken zur Diagnose und Lösung erforderlich. Probleme mit der Datenbankkonnektivität lassen sich grob in die folgenden Kategorien einteilen.

Verbindungsfehler und Ausnahmen

Verbindungsfehler und Ausnahmen können aus verschiedenen Gründen auftreten, z. B. aufgrund falscher Verbindungszeichenfolgen, Authentifizierungsfehler, Netzwerkunterbrechungen oder Datenbankserverprobleme. Zu den Ursachen können falsch konfigurierte Verbindungsparameter, ungültige Anmeldeinformationen, Netzwerkausfälle oder Abstürze oder Neustarts von Datenbankservern gehören. Falsch konfigurierte Sicherheitsgruppen, Einstellungen für virtuelle private Clouds (VPC), Netzwerk-Zugriffskontrolllisten (ACLs) und Routentabellen, die Subnetzen zugeordnet sind, können ebenfalls zu Verbindungsproblemen führen.

Das Verbindungslimit wurde erreicht

Dieses Problem tritt auf, wenn die Anzahl der gleichzeitigen Verbindungen zum Datenbankserver den maximal zulässigen Grenzwert überschreitet. Datenbankserver haben in der Regel ein konfigurierbares maximales Verbindungslimit, das durch den Parameter max_connections in den Clustern und Instanzparametergruppen definiert wird. Durch die Festlegung eines Verbindungslimits stellt der Datenbankserver sicher, dass er über ausreichende Ressourcen (z. B. Speicher und Dateihandles) verfügtCPU, um die vorhandenen Verbindungen effizient zu handhaben und eine akzeptable Leistung zu bieten. Zu den Ursachen können Verbindungslecks in der Anwendung, ineffizientes Verbindungspooling oder ein unerwarteter Anstieg der Verbindungsanfragen gehören.

Verbindungs-Timeouts

Verbindungstimeouts treten auf, wenn die Client-Anwendung innerhalb eines bestimmten Timeouts keine Verbindung mit dem Datenbankserver herstellen kann. Zu den häufigsten Ursachen gehören Netzwerkprobleme, Serverüberlastung, Firewallregeln und falsch konfigurierte Verbindungseinstellungen.

Timeouts bei Verbindungen im Leerlauf

Verbindungen im Leerlauf, die über einen längeren Zeitraum inaktiv bleiben, können vom Datenbankserver automatisch geschlossen werden, um Ressourcen zu schonen. Dieses Timeout ist in der Regel mit wait_timeout und interactive_timeout parameters konfigurierbar und sollte an die Verbindungsnutzungsmuster der Anwendung angepasst werden. Zu den Ursachen können Anwendungslogik gehören, die Verbindungen für längere Zeit inaktiv lässt, oder eine unsachgemäße Verbindungsverwaltung.

Zeitweiliges Trennen vorhandener Verbindungen

Diese Fehlerklasse bezieht sich auf ein Szenario, in dem bestehende Verbindungen zwischen einer Client-Anwendung und der Datenbank unerwartet beendet oder in unregelmäßigen Abständen getrennt werden, obwohl sie aktiv sind und verwendet werden. Diese Verbindungsabbrüche treten intermittierend auf, d. h. sie treten in unregelmäßigen Abständen und nicht durchgehend auf. Zu den Ursachen können folgende gehören:

  • Probleme mit dem Datenbankserver wie Neustarts oder Failover

  • Unsachgemäße Handhabung der Anwendungsverbindung

  • Probleme mit Lastenausgleich und Proxy

  • Netzwerkinstabilität

  • Probleme mit Komponenten oder Middleware von Drittanbietern, die am Verbindungspfad beteiligt sind

  • Timeouts bei der Ausführung von Abfragen

  • Ressourcenbeschränkungen auf der Server- oder Clientseite

Die Identifizierung der Grundursache durch umfassende Überwachung, Protokollierung und Analyse ist von entscheidender Bedeutung. Die Implementierung einer geeigneten Fehlerbehandlung, Verbindungspooling und Wiederholungsmechanismen kann jedoch dazu beitragen, die Auswirkungen dieser zeitweiligen Verbindungsabbrüche auf die Funktionalität und das Benutzererlebnis der Anwendung zu mildern.

Erfassung von Daten zu Verbindungsproblemen für Aurora My SQL RDS

Das Sammeln umfassender Daten zu den Anwendungs-, Datenbank-, Netzwerk- und Infrastrukturkomponenten ist entscheidend für die effektive Behebung von Verbindungsproblemen zwischen einer Anwendung und einer Aurora My SQL RDS . Durch die Erfassung relevanter Protokolle, Konfigurationen und Diagnoseinformationen gewinnen Sie wertvolle Erkenntnisse, die Ihnen helfen können, die Ursache der Verbindungsprobleme zu identifizieren und Sie zu einer geeigneten Lösung zu führen.

Netzwerkprotokolle und -konfigurationen, wie Sicherheitsgruppenregeln, VPC Einstellungen und Routing-Tabellen, sind wichtig, um potenzielle netzwerkbedingte Engpässe oder Fehlkonfigurationen zu identifizieren, die verhindern könnten, dass die Anwendung eine erfolgreiche Verbindung mit der Datenbank herstellt. Durch die Analyse dieser Netzwerkkomponenten können Sie sicherstellen, dass die erforderlichen Ports geöffnet sind, IP-Adressen zulässig sind und die Routingkonfigurationen korrekt eingerichtet sind.

Zeitstempel

Notieren Sie sich die genauen Zeitstempel, zu denen die Verbindungsprobleme auftreten. Dies kann helfen, Muster zu erkennen oder die Probleme mit anderen Ereignissen oder Aktivitäten zu korrelieren.

DB-Engine-Protokolle

Überprüfen Sie zusätzlich zu den allgemeinen Datenbankprotokollen auch die Datenbankmodulprotokolle (z. B. das SQL Fehlerprotokoll Mein Fehler und das Protokoll für langsame Abfragen) auf relevante Informationen oder Fehler, die mit den zeitweise auftretenden Verbindungsproblemen zusammenhängen könnten. Weitere Informationen finden Sie unter Protokollierung für Aurora MySQL-Datenbanken.

Protokolle der Client-Anwendungen

Sammeln Sie detaillierte Protokolle von den Client-Anwendungen, die eine Verbindung zur Datenbank herstellen. Anwendungsprotokolle bieten Einblick in die Verbindungsversuche, Fehler und alle relevanten Informationen aus Sicht der Anwendung. Dadurch können Probleme im Zusammenhang mit Verbindungszeichenfolgen, Authentifizierungsdaten oder der Verbindungsverarbeitung auf Anwendungsebene aufgedeckt werden.

Datenbankprotokolle hingegen bieten Einblicke in datenbankseitige Fehler, langsame Abfragen oder Ereignisse, die zu Verbindungsproblemen beitragen könnten. Weitere Informationen finden Sie unter Protokollierung für Aurora MySQL-Datenbanken.

Umgebungsvariablen für den Client

Prüfen Sie, ob Umgebungsvariablen oder Konfigurationseinstellungen auf der Clientseite die Datenbankverbindung beeinflussen könnten, z. B. Proxyeinstellungen, SSL TLS /-Einstellungen oder andere relevante Variablen.

Versionen der Client-Bibliotheken

Stellen Sie sicher, dass der Client die neuesten Versionen aller Datenbanktreiber, Bibliotheken oder Frameworks verwendet, die für die Datenbankkonnektivität verwendet werden. Veraltete Versionen können bekannte Probleme oder Kompatibilitätsprobleme aufweisen.

Erfassung des Client-Netzwerks

Führen Sie eine Netzwerkerfassung auf der Clientseite mit einem Tool wie Wireshark oder tcpdump zu Zeiten durch, in denen Verbindungsprobleme auftreten. Dies kann helfen, Netzwerkprobleme oder Anomalien auf der Clientseite zu identifizieren.

Netzwerktopologie des Clients

Machen Sie sich mit der Netzwerktopologie des Clients vertraut, einschließlich aller Firewalls, Load Balancer oder anderer Komponenten wie RDS Proxy oder Proxy, die Verbindungen zur Datenbank herstellen, anstatt SQL dass der Client direkt Verbindungen herstellt.

Einstellungen des Client-Betriebssystems

Überprüfen Sie die Betriebssystemeinstellungen des Clients, die sich auf die Netzwerkkonnektivität auswirken könnten, z. B. Firewallregeln, Netzwerkadaptereinstellungen und alle anderen relevanten Einstellungen.

Konfiguration des Verbindungspoolings

Wenn Sie in Ihrer Anwendung einen Verbindungspooling-Mechanismus verwenden, überprüfen Sie die Konfigurationseinstellungen und überwachen Sie die Pool-Metriken (z. B. aktive Verbindungen, inaktive Verbindungen und Verbindungstimeouts), um sicherzustellen, dass der Pool ordnungsgemäß funktioniert. Überprüfen Sie auch die Pooleinstellungen, z. B. die maximale Poolgröße, die minimale Poolgröße und die Einstellungen für die Verbindungsvalidierung, um sicherzustellen, dass sie korrekt konfiguriert sind.

Verbindungszeichenfolge

Die Verbindungszeichenfolge umfasst in der Regel Parameter wie den Hostnamen oder Endpunkt, die Portnummer, den Datenbanknamen und die Anmeldeinformationen für die Authentifizierung. Durch die Analyse der Verbindungszeichenfolge können potenzielle Fehlkonfigurationen oder falsche Einstellungen identifiziert werden, die Verbindungsprobleme verursachen können. Beispielsweise kann ein falscher Hostname oder eine falsche Portnummer verhindern, dass der Client die Datenbankinstanz erreicht, während ungültige Anmeldeinformationen zu Authentifizierungsfehlern und Verbindungsablehnungen führen können. Darüber hinaus kann die Verbindungszeichenfolge Probleme im Zusammenhang mit Verbindungspooling, Timeouts oder anderen verbindungsspezifischen Einstellungen aufdecken, die zu Verbindungsproblemen beitragen könnten. Wenn Sie die vollständige Verbindungszeichenfolge angeben, die von der Client-Anwendung verwendet wird, kann dies dazu beitragen, etwaige Fehlkonfigurationen auf dem Client zu lokalisieren.

Datenbankmetriken

Überwachen Sie Datenbankmetriken wie CPU Auslastung, Speicherauslastung und Festplatten-I/O in Zeiten, in denen Verbindungsprobleme auftreten. Anhand dieser Informationen kann festgestellt werden, ob in der DB-Instance Ressourcenkonflikte oder Leistungsprobleme auftreten.

DB-Engine-Version

Beachten Sie die Version der Engine Aurora My SQL RDS DB. AWS veröffentlicht regelmäßig Updates, die bekannte Probleme und Sicherheitslücken beheben und Leistungsverbesserungen einführen. Wir empfehlen Ihnen daher dringend, auf die neuesten verfügbaren Versionen zu aktualisieren, da diese Updates häufig Fehlerkorrekturen und Verbesserungen enthalten, die sich speziell auf Konnektivität, Leistung und Stabilität beziehen. Die Bereitstellung der Informationen zur Datenbankversion zusammen mit den anderen gesammelten Details kann dazu beitragen Support , Verbindungsprobleme effektiv zu diagnostizieren und zu lösen.

Netzwerk-Metriken

Erfassen Sie Netzwerkmetriken wie Latenz, Paketverlust und Durchsatz zu Zeiten, in denen Verbindungsprobleme auftreten. Tools wie pingtraceroute, und Tools zur Netzwerküberwachung können dabei helfen, diese Daten zu sammeln.

Quelle und Kundendetails

Ermitteln Sie die IP-Adressen der Anwendungsserver, Load Balancer oder anderer Komponenten, die die Datenbankverbindungen initiieren. Dies kann eine einzelne IP-Adresse oder ein Bereich von IP-Adressen sein (CIDRNotation). Wenn es sich bei der Quelle um eine EC2 Amazon-Instance handelt, hilft es auch, den Instance-Typ, die Availability Zone, die Subnetz-ID und die mit der Instance verknüpften Sicherheitsgruppen sowie die Netzwerkschnittstellendetails wie private IP-Adresse und öffentliche IP-Adresse zu überprüfen.

Durch eine gründliche Analyse der gesammelten Daten können Sie Fehlkonfigurationen, Ressourcenbeschränkungen, Netzwerkunterbrechungen oder andere grundlegende Probleme identifizieren, die die zeitweiligen oder anhaltenden Verbindungsprobleme verursachen. Diese Informationen ermöglichen es Ihnen, gezielte Maßnahmen zu ergreifen, z. B. Konfigurationen anzupassen, Netzwerkprobleme zu lösen oder die Verbindungsverarbeitung auf Anwendungsebene zu verbessern.

Überwachung von Datenbankverbindungen für Aurora My SQL RDS

Zur Überwachung und Behebung von Verbindungsproblemen können Sie die folgenden Metriken und Funktionen verwenden.

CloudWatch Metriken
  • CPUUtilization— Eine hohe CPU Auslastung der DB-Instance kann zu einer langsamen Abfrageausführung führen, was zu Verbindungstimeouts oder Ablehnungen führen kann.

  • DatabaseConnections— Überwachen Sie die Anzahl der aktiven Verbindungen zur DB-Instance. Eine hohe Anzahl von Verbindungen nahe dem konfigurierten Maximum kann auf potenzielle Verbindungsprobleme oder eine Erschöpfung des Verbindungspools hinweisen.

  • FreeableMemory— Zu wenig verfügbarer Arbeitsspeicher kann aufgrund von Ressourcenbeschränkungen zu Leistungs- und Verbindungsproblemen führen.

  • NetworkReceiveThroughputund NetworkTransmitThroughput — Ungewöhnliche Spitzen oder Einbrüche im Netzwerkdurchsatz können auf Verbindungsprobleme oder Netzwerkengpässe hinweisen.

Performance-Insights-Metriken

Analysieren Sie Datenbankmetriken wie die folgenden, um Verbindungsprobleme in Aurora My SQL RDS mithilfe von Performance Insights zu beheben:

  • Aborted_clients

  • Aborted_connects

  • Verbindungen

  • max_connections

  • Threads_connected

  • Threads_created

  • Threads_running

Diese Metriken können Ihnen helfen, Verbindungsengpässe zu identifizieren, Netzwerk- oder Authentifizierungsprobleme zu erkennen, das Verbindungspooling zu optimieren und ein effizientes Thread-Management sicherzustellen. Weitere Informationen finden Sie unter Performance Insights Insights-Zähler für Aurora My SQL.

Funktionen von Performance Insights
  • Datenbanklast — Visualisieren Sie die Datenbanklast im Zeitverlauf und korrelieren Sie sie mit Verbindungsproblemen oder Leistungseinbußen.

  • SQLStatistiken — Analysieren Sie SQL Statistiken, um ineffiziente Abfragen oder Datenbankoperationen zu identifizieren, die zu Verbindungsproblemen beitragen könnten.

  • Häufigste Abfragen — Identifizieren und analysieren Sie die ressourcenintensivsten Abfragen. Auf diese Weise können potenzielle Leistungsengpässe oder Abfragen mit langer Laufzeit, die Verbindungsprobleme verursachen können, identifiziert werden.

Durch die Überwachung dieser Metriken und die Nutzung von Performance Insights können Sie sich einen Überblick über die Leistung, den Ressourcenverbrauch und mögliche Engpässe der Datenbank-Instance verschaffen, die Verbindungsprobleme verursachen könnten. Beispielsweise:

  • Ein hoher DatabaseConnections Wert nahe dem Höchstgrenzwert kann auf eine Erschöpfung des Verbindungspools oder eine unsachgemäße Handhabung der Verbindung hinweisen, was zu Verbindungsproblemen führt.

  • Ein hoher CPUUtilization oder niedriger Wert FreeableMemory kann auf Ressourcenbeschränkungen hinweisen, die zu einer langsamen Abfrageausführung und Verbindungstimeouts oder Ablehnungen führen können.

  • Durch die Analyse der häufigsten Abfragen und SQLStatistiken können ineffiziente oder ressourcenintensive Abfragen identifiziert werden, die möglicherweise zu Verbindungsproblemen beitragen.

Darüber hinaus können Sie mithilfe der Überwachung von CloudWatch Protokollen und der Einrichtung von Alarmen Verbindungsprobleme proaktiv erkennen und darauf reagieren, bevor sie eskalieren.

Es ist wichtig zu beachten, dass diese Metriken und Tools zwar wertvolle Erkenntnisse liefern können, sie jedoch in Verbindung mit anderen Schritten zur Fehlerbehebung verwendet werden sollten. Indem Sie auch die Netzwerkkonfigurationen, Sicherheitsgruppenregeln und die Verbindungsverwaltung auf Anwendungsebene überprüfen, können Sie Verbindungsprobleme mit Aurora My SQL DB-Instances umfassend diagnostizieren und lösen.

Zusätzliche Überwachung für Aurora My SQL

CloudWatch Metriken
  • AbortedClients— Verfolgt die Anzahl der Client-Verbindungen, die nicht ordnungsgemäß geschlossen wurden.

  • AuroraSlowConnectionHandleCount— Verfolgt die Anzahl langsamer Verbindungsabwicklungen und weist auf mögliche Verbindungsprobleme oder Leistungsengpässe hin.

  • AuroraSlowHandshakeCount— Misst die Anzahl langsamer Handshake-Operationen, was auch ein Hinweis auf Verbindungsprobleme sein kann.

  • ConnectionAttempts— Misst die Anzahl der Verbindungsversuche mit der Aurora My SQL DB-Instance.

Globale Statusvariablen

Aurora_external_connection_count— Zeigt die Anzahl der Datenbankverbindungen zur DB-Instance an, ausgenommen RDS Dienstverbindungen, die für Datenbank-Integritätsprüfungen verwendet werden.

Durch die Überwachung dieser Metriken und globalen Statusvariablen können Sie sich einen Überblick über die Verbindungsmuster, Fehler und potenziellen Engpässe verschaffen, die Verbindungsprobleme mit Ihrer Amazon Aurora My SQL Instance verursachen können.

Beispielsweise AuroraSlowConnectionHandleCount kann eine hohe Anzahl von AbortedClients oder auf Verbindungsprobleme hinweisen.

Darüber hinaus können Sie durch die Einrichtung von CloudWatch Alarmen und Benachrichtigungen Verbindungsprobleme proaktiv erkennen und darauf reagieren, bevor sie eskalieren und die Leistung Ihrer Anwendung beeinträchtigen.

Verbindungsfehlercodes für Aurora My SQL RDS

Im Folgenden finden Sie einige häufig auftretende Verbindungsfehler für Aurora My SQL RDS sowie deren Fehlercodes und Erklärungen.

Fehlercode 1040: Zu viele Verbindungen

Dieser Fehler tritt auf, wenn der Client versucht, mehr Verbindungen herzustellen, als der Datenbankserver maximal zulässt. Dafür gibt es die folgenden möglichen Ursachen:

  • Fehlkonfiguration des Verbindungspoolings — Wenn Sie einen Verbindungspooling-Mechanismus verwenden, stellen Sie sicher, dass die maximale Poolgröße nicht zu hoch eingestellt ist und dass die Verbindungen wieder ordnungsgemäß zum Pool freigegeben werden.

  • Konfiguration der Datenbankinstanz — Überprüfen Sie die Einstellung für die maximal zulässige Anzahl von Verbindungen für die Datenbankinstanz und passen Sie sie gegebenenfalls an, indem Sie den Parameter festlegen. max_connections

  • Hohe Parallelität — Wenn mehrere Clients oder Anwendungen gleichzeitig eine Verbindung zur Datenbank herstellen, kann das Limit für maximal zulässige Verbindungen erreicht werden.

Fehlercode 1045: Zugriff verweigert für Benutzer '...' @ '...' (mit Passwort: YES /NO)

Dieser Fehler weist auf einen Authentifizierungsfehler beim Versuch hin, eine Verbindung zur Datenbank herzustellen. Dafür gibt es die folgenden möglichen Ursachen:

  • Kompatibilität des Authentifizierungs-Plug-ins — Prüfen Sie, ob das vom Client verwendete Authentifizierungs-Plugin mit dem Authentifizierungsmechanismus des Datenbankservers kompatibel ist.

  • Falscher Benutzername oder falsches Passwort — Stellen Sie sicher, dass der richtige Benutzername und das richtige Passwort in der Verbindungszeichenfolge oder im Authentifizierungsmechanismus verwendet werden.

  • Benutzerberechtigungen — Stellen Sie sicher, dass der Benutzer über die erforderlichen Berechtigungen verfügt, um vom angegebenen Host oder Netzwerk aus eine Verbindung zur Datenbank-Instance herzustellen.

Fehlercode 1049: Unbekannte Datenbank '...'

Dieser Fehler weist darauf hin, dass der Client versucht, eine Verbindung zu einer Datenbank herzustellen, die auf dem Server nicht vorhanden ist. Dafür gibt es die folgenden möglichen Ursachen:

  • Datenbank nicht erstellt — Stellen Sie sicher, dass die angegebene Datenbank auf dem Datenbankserver erstellt wurde.

  • Falscher Datenbankname — Überprüfen Sie den in der Verbindungszeichenfolge oder Abfrage verwendeten Datenbanknamen noch einmal auf Richtigkeit.

  • Benutzerberechtigungen — Stellen Sie sicher, dass der Benutzer über die erforderlichen Berechtigungen für den Zugriff auf die angegebene Datenbank verfügt.

Fehlercode 1153: Ich habe ein Paket erhalten, das größer als „max_allowed_packet“ -Bytes ist

Dieser Fehler tritt auf, wenn der Client versucht, Daten zu senden oder zu empfangen, die die vom Datenbankserver zulässige maximale Paketgröße überschreiten. Dafür gibt es die folgenden möglichen Ursachen:

  • Große Abfragen oder Ergebnismengen — Wenn Abfragen ausgeführt werden, die große Datenmengen beinhalten, kann die Paketgrößenbeschränkung überschritten werden.

  • Falsch konfigurierte Einstellungen für die Paketgröße — Überprüfen Sie die max_allowed_packet Einstellung auf dem Datenbankserver und passen Sie sie gegebenenfalls an.

  • Probleme mit der Netzwerkkonfiguration — Stellen Sie sicher, dass die Netzwerkkonfiguration (z. B. MTU Größe) die erforderlichen Paketgrößen zulässt.

Fehlercode 1226: Benutzer '...' hat die Ressource 'max_user_connections' überschritten (aktueller Wert:...)

Dieser Fehler weist darauf hin, dass der Benutzer die maximale Anzahl gleichzeitiger Verbindungen überschritten hat, die der Datenbankserver zulässt. Zu den möglichen Ursachen gehören die folgenden:

  • Fehlkonfiguration des Verbindungspoolings — Wenn Sie einen Verbindungspooling-Mechanismus verwenden, stellen Sie sicher, dass die maximale Poolgröße nicht zu hoch für das Verbindungslimit des Benutzers festgelegt ist.

  • Konfiguration der Datenbankinstanz — Überprüfen Sie die max_user_connections Einstellung für die Datenbankinstanz und passen Sie sie gegebenenfalls an.

  • Hohe Parallelität — Wenn mehrere Clients oder Anwendungen gleichzeitig über denselben Benutzer eine Verbindung zur Datenbank herstellen, kann das benutzerspezifische Verbindungslimit erreicht sein.

Fehlercode 2003: Auf '...' kann keine Verbindung zu meinem SQL Server hergestellt werden (10061)

Dieser Fehler tritt normalerweise auf, wenn der Client keine TCP /IP-Verbindung mit dem Datenbankserver herstellen kann. Er kann durch verschiedene Probleme verursacht werden, z. B. durch die folgenden:

  • Status der Datenbankinstanz — Stellen Sie sicher, dass sich die Datenbank-Instance im available Status befindet und keine Wartungs- oder Sicherungsvorgänge durchgeführt werden.

  • Firewallregeln — Prüfen Sie, ob Firewalls (Betriebssystem, Netzwerk oder Sicherheitsgruppe) die Verbindung am angegebenen Port blockieren (normalerweise 3306 für MySQL).

  • Falscher Hostname oder falscher Endpunkt — Stellen Sie sicher, dass der in der Verbindungszeichenfolge verwendete Hostname oder Endpunkt korrekt ist und mit der Datenbankinstanz übereinstimmt.

  • Probleme mit der Netzwerkkonnektivität — Stellen Sie sicher, dass der Client-Computer die Datenbankinstanz über das Netzwerk erreichen kann. Suchen Sie nach Netzwerkausfällen, Routing-Problemen VPC oder Fehlkonfigurationen von Subnetzen.

Fehlercode 2005: Unbekannt Mein SQL Serverhost '...' (11001)

Dieser Fehler tritt auf, wenn der Client den Hostnamen oder den Endpunkt des Datenbankservers nicht in eine IP-Adresse auflösen kann. Dafür gibt es die folgenden möglichen Ursachen:

  • DNSLösungsprobleme — Stellen Sie sicher, dass der Client-Computer den Hostnamen mithilfe von korrekt auflösen kann. DNS Überprüfen Sie die DNS Einstellungen und den DNS Cache und versuchen Sie, die IP-Adresse anstelle des Hostnamens zu verwenden.

  • Falscher Hostname oder falscher Endpunkt — Überprüfen Sie den in der Verbindungszeichenfolge verwendeten Hostnamen oder Endpunkt noch einmal auf Richtigkeit.

  • Probleme mit der Netzwerkkonfiguration — Stellen Sie sicher, dass die Netzwerkkonfiguration des Clients (z. B. Subnetz- und Routing-Tabellen) die DNS Auflösung und Konnektivität zur Datenbank-Instance ermöglicht. VPC

Fehlercode 2026: SSL Verbindungsfehler

Dieser Fehler tritt auf, wenn während des Verbindungsversuchs ein Problem mit der TLS KonfigurationSSL/oder der Zertifikatsvalidierung auftritt. Dafür gibt es die folgenden möglichen Ursachen:

  • Ablauf des Zertifikats — Prüfen Sie, ob das vom Server verwendete TLS ZertifikatSSL/abgelaufen ist und erneuert werden muss.

  • Probleme bei der Zertifikatsvalidierung — Stellen Sie sicher, dass der Client das SSL TLS /-Zertifikat des Servers korrekt validieren kann und ob das Zertifikat vertrauenswürdig ist.

  • Probleme mit der Netzwerkkonfiguration — Stellen Sie sicher, dass die Netzwerkkonfiguration den SSL/TLS connections and doesn't block or interfere with the SSL/TLS Handshake-Prozess zulässt.

  • SSL/TLS configuration mismatch – Make sure that the SSL/TLSDie Einstellungen (z. B. Cipher Suites und Protokollversionen) auf dem Client und dem Server sind kompatibel.

Wenn Sie die detaillierten Erklärungen und möglichen Ursachen für jeden Fehlercode verstehen, können Sie Verbindungsprobleme bei der Arbeit mit Aurora My-Datenbanken besser beheben und lösen.

Empfehlungen zur Parameteroptimierung für Aurora My SQL RDS

Maximale Anzahl der Verbindungen

Durch die Anpassung dieser Parameter können Verbindungsprobleme vermieden werden, die durch das Erreichen der maximal zulässigen Verbindungsgrenze verursacht werden. Stellen Sie sicher, dass diese Werte entsprechend den Parallelitätsanforderungen und Ressourcenbeschränkungen Ihrer Anwendung festgelegt sind.

  • max_connections— Dieser Parameter gibt die maximale Anzahl gleichzeitiger Verbindungen zur DB-Instance an.

  • max_user_connections— Dieser Parameter kann bei der Benutzererstellung und -änderung angegeben werden und legt die maximale Anzahl gleichzeitiger Verbindungen fest, die für ein bestimmtes Benutzerkonto zulässig sind.

Größe des Netzwerkpuffers

Eine Erhöhung dieser Werte kann die Netzwerkleistung verbessern, insbesondere bei Workloads mit großen Datenübertragungen oder Ergebnismengen. Seien Sie jedoch vorsichtig, da größere Puffergrößen mehr Speicher verbrauchen können.

  • net_buffer_length— Dieser Parameter legt die Anfangsgröße für Client-Verbindungs- und Ergebnispuffer fest und sorgt so für ein ausgewogenes Verhältnis zwischen Speichernutzung und Abfrageleistung.

  • max_allowed_packet— Dieser Parameter gibt die maximale Größe eines einzelnen Netzwerkpakets an, das von der DB-Instance gesendet oder empfangen werden kann.

Netzwerkkomprimierung (clientseitig)

Durch die Aktivierung der Netzwerkkomprimierung kann die Nutzung der Netzwerkbandbreite reduziert werden, aber sie kann den CPU Overhead sowohl auf der Client- als auch auf der Serverseite erhöhen.

  • compress— Dieser Parameter aktiviert oder deaktiviert die Netzwerkkomprimierung für die Client/Server-Kommunikation.

  • compress_protocol— Dieser Parameter gibt das Komprimierungsprotokoll an, das für die Netzwerkkommunikation verwendet werden soll.

Optimierung der Netzwerkleistung

Die Anpassung dieser Timeouts kann dazu beitragen, inaktive Verbindungen zu verwalten und eine Erschöpfung der Ressourcen zu verhindern. Seien Sie jedoch vorsichtig, da niedrige Werte zu vorzeitigen Verbindungsabbrüchen führen können.

  • interactive_timeout— Dieser Parameter gibt an, wie viele Sekunden der Server auf Aktivitäten in einer interaktiven Verbindung wartet, bevor er sie schließt.

  • wait_timeout— Dieser Parameter bestimmt, wie viele Sekunden der Server auf Aktivität bei einer nicht interaktiven Verbindung wartet, bevor er sie schließt.

Einstellungen für das Netzwerk-Timeout

Durch die Anpassung dieser Timeouts können Probleme im Zusammenhang mit langsamen oder nicht reagierenden Verbindungen behoben werden. Achten Sie jedoch darauf, sie nicht zu niedrig einzustellen, da dies zu vorzeitigen Verbindungsausfällen führen kann.

  • net_read_timeout— Dieser Parameter gibt an, wie viele Sekunden auf weitere Daten von einer Verbindung gewartet werden soll, bevor der Lesevorgang beendet wird.

  • net_write_timeout— Dieser Parameter bestimmt, wie viele Sekunden gewartet werden soll, bis ein Block in eine Verbindung geschrieben wird, bevor der Schreibvorgang beendet wird.

Beispiele für die Behebung von Datenbankverbindungsproblemen für Aurora My SQL RDS

Die folgenden Beispiele zeigen, wie Datenbankverbindungsprobleme für Aurora My SQL identifiziert und behoben werden könnenSQL.

Beispiel 1: Fehlerbehebung bei fehlgeschlagenen Verbindungsversuchen

Verbindungsversuche können aus verschiedenen Gründen fehlschlagen, darunter Authentifizierungsfehler, SSL TLS Handshake-Fehler, erreichtes max_connections Limit und Ressourcenbeschränkungen für die DB-Instance.

Sie können die Anzahl der fehlgeschlagenen Verbindungen entweder in Performance Insights oder mit dem folgenden Befehl verfolgen.

mysql> show global status like 'aborted_connects'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Aborted_connects | 7 | +------------------+-------+ 1 row in set (0.00 sec)

Wenn die Anzahl der Verbindungen im Laufe der Zeit Aborted_connects zunimmt, kann es bei der Anwendung zu zeitweiligen Verbindungsproblemen kommen.

Sie können Aurora Advanced Auditing verwenden, um die Verbindungen und Verbindungsabbrüche zu den Client-Verbindungen zu protokollieren. Sie können dies tun, indem Sie die folgenden Parameter in der DB-Cluster-Parametergruppe festlegen:

  • server_audit_logging = 1

  • server_audit_events = CONNECT

Im Folgenden finden Sie einen Auszug aus den Audit-Logs für eine fehlgeschlagene Anmeldung.

1728498527380921,auora-mysql-node1,user_1,172.31.49.222,147189,0,FAILED_CONNECT,,,1045 1728498527380940,auora-mysql-node1,user_1,172.31.49.222,147189,0,DISCONNECT,,,0

Wobei gilt:

  • 1728498527380921— Der Epochenzeitstempel, zu dem die fehlgeschlagene Anmeldung stattgefunden hat

  • aurora-mysql-node1— Die Instanz-ID des Knotens des Aurora My SQL Clusters, auf dem die Verbindung fehlgeschlagen ist

  • user_1— Der Name des Datenbankbenutzers, für den die Anmeldung fehlgeschlagen ist

  • 172.31.49.222— Die private IP-Adresse des Clients, von dem aus die Verbindung hergestellt wurde

  • 147189— Die Verbindungs-ID der fehlgeschlagenen Anmeldung

  • FAILED_CONNECT— Zeigt an, dass die Verbindung fehlgeschlagen ist.

  • 1045— Der Rückgabecode. Ein Wert ungleich Null weist auf einen Fehler hin. In diesem Fall 1045 entspricht dies dem Zugriff verweigert.

Weitere Informationen finden Sie in der SQL Dokumentation Meine Dokumentation unter Serverfehlercodes und Client-Fehlercodes.

Sie können die Aurora SQL My-Fehlerprotokolle auch auf verwandte Fehlermeldungen überprüfen, zum Beispiel:

2024-10-09T19:26:59.310443Z 220 [Note] [MY-010926] [Server] Access denied for user 'user_1'@'172.31.49.222' (using password: YES) (sql_authentication.cc:1502)

Beispiel 2: Behebung abnormaler Client-Verbindungsabbrüche

Sie können die Anzahl abnormaler Client-Verbindungsabbrüche entweder in Performance Insights oder mit dem folgenden Befehl verfolgen.

mysql> show global status like 'aborted_clients'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | Aborted_clients | 9 | +-----------------+-------+ 1 row in set (0.01 sec)

Wenn die Anzahl der Verbindungen im Laufe der Zeit Aborted_clients zunimmt, schließt die Anwendung die Verbindungen zur Datenbank nicht korrekt. Wenn Verbindungen nicht ordnungsgemäß geschlossen werden, kann dies zu Ressourcenlecks und potenziellen Leistungsproblemen führen. Wenn Verbindungen unnötig geöffnet bleiben, können Systemressourcen wie Speicher und Dateideskriptoren verbraucht werden, was letztendlich dazu führen kann, dass die Anwendung oder der Server nicht mehr reagiert oder neu gestartet wird.

Sie können die folgende Abfrage verwenden, um Konten zu identifizieren, die Verbindungen nicht ordnungsgemäß schließen. Sie ruft den Namen des Benutzerkontos, den Host, von dem aus der Benutzer eine Verbindung herstellt, die Anzahl der nicht geschlossenen Verbindungen und den Prozentsatz der nicht geschlossenen Verbindungen ab.

SELECT ess.user, ess.host, (a.total_connections - a.current_connections) - ess.count_star AS not_closed, (((a.total_connections - a.current_connections) - ess.count_star) * 100) / (a.total_connections - a.current_connections) AS pct_not_closed FROM performance_schema.events_statements_summary_by_account_by_event_name AS ess JOIN performance_schema.accounts AS a ON (ess.user = a.user AND ess.host = a.host) WHERE ess.event_name = 'statement/com/quit' AND (a.total_connections - a.current_connections) > ess.count_star; +----------+---------------+------------+----------------+ | user | host | not_closed | pct_not_closed | +----------+---------------+------------+----------------+ | user1 | 172.31.49.222 | 1 | 33.3333 | | user1 | 172.31.93.250 | 1024 | 12.1021 | | user2 | 172.31.93.250 | 10 | 12.8551 | +----------+---------------+------------+----------------+ 3 rows in set (0.00 sec)

Nachdem Sie die Benutzerkonten und Hosts identifiziert haben, von denen aus die Verbindungen nicht geschlossen wurden, können Sie den Code überprüfen, der die Verbindungen nicht ordnungsgemäß schließt.

Verwenden Sie beispielsweise mit dem SQL Konnektor My in Python die close() Methode des Verbindungsobjekts, um Verbindungen zu schließen. Hier ist eine Beispielfunktion, die eine Verbindung zu einer Datenbank herstellt, eine Abfrage ausführt und die Verbindung schließt:

import mysql.connector def execute_query(query): # Establish a connection to the database connection = mysql.connector.connect( host="your_host", user="your_username", password="your_password", database="your_database" ) try: # Create a cursor object cursor = connection.cursor() # Execute the query cursor.execute(query) # Fetch and process the results results = cursor.fetchall() for row in results: print(row) finally: # Close the cursor and connection cursor.close() connection.close()

In diesem Beispiel wird die connection.close() Methode im finally Block aufgerufen, um sicherzustellen, dass die Verbindung geschlossen wird, unabhängig davon, ob eine Ausnahme auftritt oder nicht.