Beheben von Konnektivitätsproblemen in der Azure-Datenbank für MySQL – Flexibler Server

GILT FÜR: Azure Database for MySQL – Single Server Azure Database for MySQL – Flexible Server

Wichtig

Azure Database for MySQL single server is on the retirement path. Es wird dringend empfohlen, ein Upgrade auf azure Database for MySQL flexiblen Server durchzuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?

Die MySQL Community Edition verwaltet Verbindungen mit einem Thread pro Verbindung. Folglich erhält jede Benutzerverbindung im mysqld-Prozess einen dedizierten Betriebssystemthread.

Bei dieser Art der Verbindungsbehandlung gibt es potenzielle Probleme. Beispielsweise ist bei einer großen Anzahl von Benutzerverbindungen die Arbeitsspeichernutzung relativ hoch, selbst wenn es sich um Verbindungen im Leerlauf handelt. Darüber hinaus entsteht beim Arbeiten mit Tausenden von Benutzerverbindungen ein höherer Aufwand für interne Serverkonflikte und Kontextwechsel.

Diagnostizieren von häufigen Verbindungsfehlern

Wenn Ihre Instanz von Azure Database für MySQL flexible Server Probleme hat, denken Sie daran, dass Probleme in einer der drei beteiligten Ebenen vorhanden sein können: das Clientgerät, das Netzwerk oder Ihre Azure-Datenbank für mySQL flexible Serverinstanz.

Berücksichtigen Sie daher beim Diagnostizieren von Verbindungsfehlern immer alle Details der folgenden Elemente:

  • Client, einschließlich der folgenden:
    • Konfiguration (lokal, Azure-VM usw. oder DBA-Computer).
    • Betriebssystem:
    • Software und Versionen.
  • Verbindungszeichenfolge und alle enthaltenen Parameter.
  • Netzwerktopologie (dieselbe Region/VZ? Firewallregeln? Routing).
  • Verbindungspool (Parameter und Konfiguration), sofern einer verwendet wird.

Es ist auch wichtig, dass Sie ermitteln, ob das Datenbankverbindungsproblem ein einzelnes Clientgerät oder mehrere Clientgeräte betrifft. Wenn sich die Fehler nur auf einen von mehreren Clients auswirken, ist es wahrscheinlich, dass das Problem diesen Client betrifft. Wenn jedoch bei allen Clients derselbe Fehler auftritt, ist es wahrscheinlicher, dass das Problem aufseiten des Datenbankservers oder in der Netzwerkumgebung dazwischen liegt.

Berücksichtigen Sie unbedingt auch die Möglichkeit einer Workloadüberlastung, insbesondere, wenn eine Anwendung in sehr kurzer Zeit eine sehr große Anzahl von Verbindungen öffnet. Sie können Metriken wie „Verbindungen insgesamt“, „Aktive Verbindungen“ und „Abgebrochene Verbindungen“ verwenden, um dies zu untersuchen.

Wenn Sie eine Verbindung von einem Clientgerät oder einer Anwendung herstellen, erfolgt in MySQL zuerst der wichtige Aufruf der Funktion „getaddrinfo“, die die DNS-Übersetzung vom angegebenen Endpunkt in eine IP-Adresse vornimmt. Wenn das Abrufen der Adresse fehlschlägt, wird in MySQL eine Fehlermeldung angezeigt, wobei am Ende die Zahl in Klammern (11, 110 usw.) angegeben ist, wie z. B. „ERROR 2005 (HY000): Unknown MySQL server host 'mysql-example.mysql.database.azure.com' (11)“.

Clientseitige Fehlercodes für ERROR 2005

In der folgenden Tabelle finden Sie Kurzhinweise zu einigen clientseitigen Fehlercodes für ERROR 2005.

ERROR 2005-Code Hinweise
(11) „EAI_SYSTEM – System error“ Es liegt ein Fehler bei der DNS-Auflösung auf der Clientseite vor. Kein Problem mit einer Azure-Datenbank für flexiblen MySQL-Server. Verwenden Sie auf dem Client den Befehl „dig/nslookup“, um das Problem zu beheben.
(110) „ETIMEDOUT (Connection timed out)“ Beim Herstellen einer Verbindung mit dem DNS-Server des Clients ist ein Timeout aufgetreten. Kein Problem mit einer Azure-Datenbank für flexiblen MySQL-Server. Verwenden Sie auf dem Client den Befehl „dig/nslookup“, um das Problem zu beheben.
(0) „name unknown“ Der angegebene Name konnte nicht von DNS aufgelöst werden. Überprüfen Sie die Eingabe auf dem Client. Dies ist wahrscheinlich kein Problem mit azure Database für MySQL flexible Server.

Der zweite Aufruf in mysql ist mit Socketkonnektivität und beim Betrachten einer Fehlermeldung wie "ERROR 2003 (HY000): Kann keine Verbindung mit Azure Database for MySQL flexible Server auf 'mysql-example.mysql.database.azure.com' (111)" herstellen, die Zahl am Ende (99, 110, 111, 113 usw.).

Clientseitige Fehlercodes für ERROR 2003

In der folgenden Tabelle finden Sie Kurzhinweise zu einigen clientseitigen Fehlercodes für ERROR 2003.

ERROR 2003-Code Hinweise
(99) „EADDRNOTAVAIL (Cannot assign requested address)“ Dieser Fehler wird nicht durch azure Database for MySQL flexible Server verursacht, sondern befindet sich auf der Clientseite.
(110) „ETIMEDOUT (Connection timed out)“ Beim Herstellen einer Verbindung mit der angegebenen IP-Adresse ist ein Timeout aufgetreten. Wahrscheinlich liegt ein Sicherheitsproblem (Firewallregeln) oder ein Netzwerkproblem (Routing) vor. In der Regel ist dies kein Problem mit azure Database for MySQL flexible Server. Verwenden Sie auf dem Clientgerät den Befehl nc/telnet/TCPtraceroute, um das Problem zu beheben.
(111) „ECONNREFUSED (Connection refused)“ Die Pakete haben zwar den Zielserver erreicht, aber der Server hat die Verbindung abgelehnt. Möglicherweise wurde versucht, eine Verbindung mit dem falschen Server oder dem falschen Port herzustellen. Dies kann sich auch auf den Zieldienst (Azure Database for MySQL flexible Server) beziehen, der vom Failover wiederhergestellt wird oder die Absturzwiederherstellung durchläuft und noch keine Verbindungen akzeptiert. Dieses Problem kann aufseiten des Clients oder aufseiten des Servers liegen. Verwenden Sie auf dem Clientgerät den Befehl nc/telnet/TCPtraceroute, um das Problem zu beheben.
(113) „EHOSTUNREACH (Host unreachable)“ Die Routingtabelle des Clientgeräts enthält keinen Pfad zu dem Netzwerk, in dem sich der Datenbankserver befindet. Überprüfen Sie die Netzwerkkonfiguration des Clientgeräts.

Sonstige Fehlercodes

In der folgenden Tabelle finden Sie Kurzhinweise zu einigen anderen Fehlercodes im Zusammenhang mit Problemen, die nach dem erfolgreichen Herstellen der Netzwerkverbindung mit dem Datenbankserver auftreten.

Fehlercode Hinweise
ERROR 2013: Lost connection to MySQL server Die Verbindung wurde zwar hergestellt, aber danach getrennt. Dies kann passieren, wenn versucht wird, eine Verbindung mit einem anderen System als MySQL herzustellen (beispielsweise wenn versucht wird, mit einem MySQL-Client eine Verbindung mit SSH auf Port 22 herzustellen). Dies kann auch passieren, wenn der Administrator die Sitzung beendet. Dies kann auch passieren, wenn die Datenbank die Sitzung aufgrund einer Zeitüberschreitung beendet. Oder es handelt sich um Probleme mit dem Datenbankserver, nachdem die Verbindung hergestellt wurde. Der Fehler kann jederzeit während der Lebensdauer der Clientverbindung auftreten. Dies kann ein Hinweis darauf sein, dass in der Datenbank ein schwerwiegendes Problem aufgetreten ist.
ERROR 1040: Too many connections Die Anzahl der verbundenen Datenbankclients hat bereits die konfigurierte maximale Anzahl erreicht. Sie müssen herausfinden, warum so viele Verbindungen mit der Datenbank hergestellt werden.
ERROR 1045: Access denied for user Der Client hat einen falschen Benutzernamen oder ein falsches Kennwort angegeben, sodass die Datenbank den Zugriff verweigert hat.
ERROR 2006: MySQL server has gone away Dieser Fehler ist mit dem Eintrag ERROR 2013: Lost connection to MySQL server in der vorherigen Tabelle vergleichbar.
ERROR 1317: Query execution was interrupted Fehler, der auf dem Client auftritt, wenn der primäre Benutzer die Abfrage und nicht die Verbindung beendet.
ERROR 1129: Host '1.2.3.4' is blocked because of many connection errors Fehlermeldung „Unblock with 'mysqladmin flush-hosts'“: Alle Clients eines Computers werden blockiert, wenn ein Client dieses Computers mehrmals versucht, mit dem falschen Protokoll eine Verbindung mit MySQL herzustellen (Telnetting auf den MySQL-Port ist ein Beispiel). Wie die Fehlermeldung besagt, muss der Administratorbenutzer der Datenbank den Befehl FLUSH HOSTS; ausführen, um das Problem zu beheben.

Hinweis

Weitere Informationen zu Verbindungsfehlern finden Sie im Blogbeitrag Untersuchung von Verbindungsproblemen mit Azure Database for MySQL flexible Server.

Nächste Schritte

Um Antworten anderer Benutzer auf Ihre wichtigsten Fragen zu erhalten oder eine Frage zu veröffentlichen oder zu beantworten, besuchen Sie Stack Overflow.