Delen via


Verbindingsproblemen in Azure Database for MySQL - Flexibele server oplossen

VAN TOEPASSING OP: Azure Database for MySQL - Enkele server Azure Database for MySQL - Flexibele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

De MySQL Community Edition beheert verbindingen met één thread per verbinding. Als gevolg hiervan krijgt elke gebruikersverbinding een toegewezen besturingssysteemthread in het mysqld-proces.

Er zijn mogelijke problemen met betrekking tot dit type verbindingsafhandeling. Het geheugengebruik is bijvoorbeeld relatief hoog als er een groot aantal gebruikersverbindingen is, zelfs als ze niet-actieve verbindingen zijn. Daarnaast is er een hoger niveau van interne serverconflicten en contextoverhead bij het werken met duizenden gebruikersverbindingen.

Veelvoorkomende connectiviteitsfouten vaststellen

Wanneer uw exemplaar van Azure Database for MySQL Flexible Server verbindingsproblemen ondervindt, moet u er rekening mee houden dat er problemen kunnen optreden in een van de drie betrokken lagen: het clientapparaat, het netwerk of uw exemplaar van Azure Database for MySQL Flexible Server.

Als u connectiviteitsfouten diagnosticeert, moet u daarom rekening houden met de volledige details van het volgende:

  • Client, met inbegrip van:
    • Configuratie (on-premises, Virtuele Azure-machine, enzovoort) of een DBA-machine.
    • Besturingssysteem.
    • Software en versies.
  • Verbindingsreeks en eventuele opgenomen parameters.
  • Netwerktopologie (dezelfde regio? dezelfde AZ? firewallregels? routering).
  • Verbindingsgroep (parameters en configuratie), als deze in gebruik is.

Het is ook belangrijk om te bepalen of het probleem met de databaseverbinding van invloed is op één clientapparaat of meerdere clientapparaten. Als de fouten slechts een van de verschillende clients beïnvloeden, is het waarschijnlijk dat het probleem bij die client zit. Als alle clients echter dezelfde fout ondervinden, is het waarschijnlijker dat het probleem aan de serverzijde van de database zit of in het netwerk ertussen.

Hou ook rekening met het potentieel van overbelasting van de werkbelasting, met name als een toepassing in een zeer korte tijd een heleboel verbindingen opent. U kunt metrische gegevens, zoals 'Totaal aantal verbindingen', 'Actieve verbindingen', en 'Afgebroken verbindingen', gebruiken om dit te onderzoeken.

Wanneer u verbinding maakt vanaf een clientapparaat of toepassing, is de eerste belangrijke aanroep in mysql het ophalen vanaddrinfo, waarmee de DNS-vertaling wordt uitgevoerd van het eindpunt dat is opgegeven in een IP-adres. Als het adres mislukt, wordt in MySQL een foutbericht weergegeven, zoals 'ERROR 2005 (HY000): Unknown MySQL server host 'mysql-example.mysql.database.azure.com' (11)' en het nummer aan het einde (11, 110, enzovoort).

Foutcodes 2005 aan clientzijde

Snelzoekgidsopmerkingen voor sommige fout 2005-codes aan de clientzijde worden weergegeven in de volgende tabel.

FOUT 2005-code Notes
(11) "EAI_SYSTEM - systeemfout" Er is een fout opgetreden in de DNS-resolutie aan de clientzijde. Geen probleem met Azure Database for MySQL Flexible Server. Gebruik dig/nslookup op de client om problemen op te lossen.
(110) 'ETIMEDOUT - Time-out van verbinding Er is een time-out opgetreden bij het maken van verbinding met de DNS-server van de client. Geen probleem met Azure Database for MySQL Flexible Server. Gebruik dig/nslookup op de client om problemen op te lossen.
(0) naam onbekend De opgegeven naam kan niet worden omgezet door DNS. Controleer de invoer op de client. Dit is waarschijnlijk geen probleem met Azure Database for MySQL Flexible Server.

De tweede aanroep in mysql is met socketconnectiviteit en bij het bekijken van een foutbericht zoals 'ERROR 2003 (HY000): Kan geen verbinding maken met Azure Database for MySQL Flexible Server op 'mysql-example.mysql.database.azure.com' (111)', het nummer aan het einde (99, 110, 111, 113, enzovoort).

Foutcode 2003 aan clientzijde

Snelzoekgidsopmerkingen voor sommige fout 2003-codes aan de clientzijde worden weergegeven in de volgende tabel.

FOUT 2003-code Notes
(99) EADDRNOTAVAIL - Kan aangevraagd adres niet toewijzen Deze fout wordt niet veroorzaakt door Azure Database for MySQL Flexible Server, in plaats daarvan aan de clientzijde.
(110) 'ETIMEDOUT - Time-out van verbinding Er was een time-out die verbinding maakte met het opgegeven IP-adres. Waarschijnlijk is er een beveiligingsprobleem (firewallregels) of netwerkproblemen (routering). Dit is meestal geen probleem met Azure Database for MySQL Flexible Server. Gebruik nc/telnet/TCPtraceroute op het clientapparaat om problemen op te lossen.
WSAECONNREFUSED - verbinding geweigerd Terwijl de pakketten de doelserver bereikten, heeft de server de verbinding geweigerd. Dit kan een poging zijn om verbinding te maken met de verkeerde server of de verkeerde poort. Dit kan ook betrekking hebben op de doelservice (Azure Database for MySQL Flexible Server) die niet beschikbaar is, herstelt van failover of crashherstel uitvoert en nog geen verbindingen accepteert. Dit probleem kan zich aan de clientzijde of aan de serverzijde bevinden. Gebruik nc/telnet/TCPtraceroute op het clientapparaat om problemen op te lossen.
(113) EHOSTUNREACH - Host onbereikbaar De routeringstabel van het clientapparaat bevat geen pad naar het netwerk waarop de databaseserver zich bevindt. Controleer de netwerkconfiguratie van het clientapparaat.

Overige foutcodes

Snelzoekgidsopmerkingen voor enkele andere foutcodes met betrekking tot problemen die optreden nadat de netwerkverbinding met de databaseserver tot stand is gebracht, worden weergegeven in de volgende tabel.

Foutcode Notes
FOUT 2013: Verbinding met MySQL-server is verbroken De verbinding is tot stand gebracht, maar daarna is deze verbroken. Dit kan gebeuren als een verbinding wordt geprobeerd met iets dat niet MySQL is (zoals het gebruik van een MySQL-client om bijvoorbeeld verbinding te maken met SSH op poort 22). Dit kan ook gebeuren als de supergebruiker de sessie beëindigt. Dit kan ook gebeuren als er een time-out optreedt voor de sessie in de database. Of het kan verwijzen naar problemen op de databaseserver, nadat de verbinding tot stand is gebracht. Dit kan op elk moment gebeuren tijdens de levensduur van de clientverbinding. Het kan erop wijzen dat de database een ernstig probleem heeft gehad.
FOUT 1040 Te veel verbindingen Het aantal verbonden databaseclients is al het geconfigureerde maximumaantal. U moet evalueren waarom er zoveel verbindingen tot stand zijn gebracht op basis van de database.
FOUT 1045 Toegang geweigerd voor gebruiker De client heeft een onjuiste gebruikersnaam of een onjuist wachtwoord opgegeven, zodat de database de toegang heeft geweigerd.
FOUT 2006 MySQL-server is verdwenen Vergelijkbaar met FOUT 2013 Verbinding met MySQL-server verbroken in de vorige tabel.
FOUT 1317 Queryuitvoering is onderbroken Fout die de client ontvangt wanneer de primaire gebruiker de query stopt, niet de verbinding.
FOUT 1129 "Host '1.2.3.4' is geblokkeerd vanwege veel verbindingsfouten" Blokkering opheffen met 'mysqladmin flush-hosts': alle clients op één computer worden geblokkeerd als één client van die computer meerdere keren probeert het verkeerde protocol te gebruiken om verbinding te maken met MySQL (telnetting naar de MySQL-poort is één voorbeeld). Zoals in het foutbericht wordt vermeld, moet de gebruiker met beheerdersrechten van de database FLUSH HOSTS;uitvoeren om het probleem op te lossen.

Notitie

Zie het blogbericht Verbindingsproblemen onderzoeken met Azure Database for MySQL Flexible Server voor meer informatie over connectiviteitsfouten.

Volgende stappen

Als u peerantwoorden wilt vinden op uw belangrijkste vragen of als u een vraag wilt posten of beantwoorden, gaat u naar Stack Overflow.