Sdílet prostřednictvím


Řešení potíží s připojením na flexibilním serveru Azure Database for MySQL

MySQL Community Edition spravuje připojení pomocí jednoho vlákna na připojení. V důsledku toho každé připojení uživatele získá vyhrazené vlákno operačního systému v procesu mysqld.

K tomuto typu zpracování připojení jsou spojené potenciální problémy. Například využití paměti je relativně vysoké, pokud existuje velký počet uživatelských připojení, i když jsou nečinná připojení. Při práci s tisíci uživatelských připojení navíc existuje vyšší úroveň kolize interního serveru a režijní náklady na přepínání kontextu.

Diagnostika běžných chyb připojení

Vždy, když u vaší instance flexibilního serveru Azure Database for MySQL dochází k problémům s připojením, mějte na paměti, že problémy můžou existovat ve všech třech vrstvách: na klientském zařízení, v síti nebo v instanci flexibilního serveru Azure Database for MySQL.

V důsledku toho nezapomeňte při diagnostice chyb připojení zvážit úplné podrobnosti o těchto chybách:

  • Klient, včetně:
    • Konfigurace (místní, virtuální počítač Azure atd. nebo počítač DBA).
    • Operační systém.
    • Software a verze.
  • Připojovací řetězec a všechny zahrnuté parametry.
  • Síťová topologie (stejná oblast? stejná pravidla brány firewall? AZ? směrování).
  • Fond připojení (parametry a konfigurace), pokud se používá.

Je také důležité určit, jestli problém s připojením k databázi ovlivňuje jedno klientské zařízení nebo několik klientských zařízení. Pokud chyby ovlivňují pouze jeden z několika klientů, je pravděpodobné, že problém je s tímto klientem. Pokud se ale u všech klientů zobrazuje stejná chyba, je pravděpodobnější, že problém je na straně databázového serveru nebo u sítě mezi.

Nezapomeňte vzít v úvahu také potenciál přetížení úloh, zejména pokud aplikace otevře nárůst připojení za krátkou dobu. K prozkoumání můžete použít metriky, jako jsou Total Connections (Celková připojení), Active Connections (Aktivní připojení) a Aborted Connections (Přerušená připojení).

Když navážete připojení z klientského zařízení nebo aplikace, prvním důležitým voláním v mysql je getaddrinfo, které provádí překlad DNS z koncového bodu zadaného na IP adresu. Pokud se adresa nezdaří, MySQL zobrazí chybovou zprávu typu CHYBA 2005 (HY000): Neznámý hostitel serveru MySQL mysql-example.mysql.database.azure.com (11) a číslo na konci (11, 110 atd.).

Chyba na straně klienta 2 005 kódů

Rychlé referenční poznámky k některým kódům na straně klienta 2 005 se zobrazí v následující tabulce.

CHYBA 2005 – kód Poznámky
(11) EAI_SYSTEM – chyba systému Na straně klienta došlo k chybě překladu DNS. Nejedná se o problém s flexibilním serverem Azure Database for MySQL. K řešení potíží použijte nástroj dig/nslookup na klientovi.
(110) ETIMEDOUT - Připojení vypršelo Došlo k vypršení časového limitu připojení k serveru DNS klienta. Nejedná se o problém s flexibilním serverem Azure Database for MySQL. K řešení potíží použijte nástroj dig/nslookup na klientovi.
(0) neznámý název Zadaný název DNS nebylo možné přeložit. Zkontrolujte vstup v klientovi. Pravděpodobně se nejedná o problém s flexibilním serverem Azure Database for MySQL.

Druhé volání v mysql je s připojením soketů a při pohledu na chybovou zprávu typu CHYBA 2003 (HY000): Nejde se připojit k flexibilnímu serveru Azure Database for MySQL na mysql-example.mysql.database.azure.com (111), číslo na konci (99, 110, 111, 113 atd.).

Chyba na straně klienta 2 003 kódů

Rychlé referenční poznámky k některým kódům na straně klienta 2 003 se zobrazují v následující tabulce.

CHYBA 2003 – kód Poznámky
(99) EADDRNOTAVAIL – Nelze přiřadit požadovanou adresu Tato chyba není způsobena flexibilním serverem Azure Database for MySQL, spíše na straně klienta.
(110) ETIMEDOUT - Připojení vypršelo Došlo k vypršení časového limitu připojení k zadané IP adrese. Pravděpodobně problém se zabezpečením (pravidly brány firewall) nebo sítěmi (směrováním). Obvykle se nejedná o problém s flexibilním serverem Azure Database for MySQL. K řešení potíží použijte nc/telnet/TCPtraceroute na klientském zařízení.
(111) ECONNREFUSED - Spojení zamítnuto Ačkoliv pakety dosáhly cílového serveru, server odmítl připojení. Může se jednat o pokus o připojení k nesprávnému serveru nebo nesprávnému portu. To také může souviset s výpadkem cílové služby (flexibilní server Azure Database for MySQL), zotavením z převzetí služeb při selhání nebo zotavením po havárii a nedostupováním připojení. Tento problém může být na straně klienta nebo na straně serveru. K řešení potíží použijte nc/telnet/TCPtraceroute na klientském zařízení.
(113) EHOSTUNREACH – nedostupný hostitel Směrovací tabulka klientského zařízení neobsahuje cestu k síti, na které se nachází databázový server. Zkontrolujte konfiguraci sítě klientského zařízení.

Jiné kódy chyb

Stručné poznámky k některým dalším chybovým kódům souvisejícím s problémy, které se vyskytnou po úspěšném navázání síťového spojení s databázovým serverem, jsou uvedeny v následující tabulce.

Kód chyby Poznámky
CHYBA 2013 Ztráta připojení k serveru MySQL Spojení bylo navázáno, ale poté bylo ztraceno. K tomu může dojít v případě, že se pokusíte o připojení k něčemu, co není MySQL (například pomocí klienta MySQL pro připojení k SSH na portu 22). Může k tomu dojít také v případě, že superuživatel relaci ukončí. Může k tomu dojít také v případě, že databázi vyprší časový limit relace. Nebo může odkazovat na problémy na databázovém serveru po navázání připojení. K tomu může dojít kdykoli během životnosti připojení klienta. Může to znamenat, že databáze měla závažný problém.
CHYBA 1040 Příliš mnoho připojení Počet připojených databázových klientů je již na nakonfigurované maximálním počtu. Je potřeba vyhodnotit, proč je pro databázi vytvořeno tolik připojení.
CHYBA 1045 Přístup odepřen pro uživatele Klient zadal nesprávné uživatelské jméno nebo heslo, takže databáze odepřela přístup.
CHYBA 2006 Server MySQL se odpojil Podobně jako CHYBA 2013 Ztráta připojení k serveru MySQL v předchozí tabulce.
CHYBA 1317 Spuštění dotazu bylo přerušeno Chyba, kterou klient obdrží, když primární uživatel ukončí dotaz, nikoliv připojení.
CHYBA 1129 Hostitel 1.2.3.4 je blokován kvůli mnoha chybám připojení Odblokování pomocí nástroje mysqladmin flush-hosts – všichni klienti v jednom počítači se zablokují, pokud se jeden klient tohoto počítače několikrát pokusí použít nesprávný protokol pro připojení k MySQL (jedním z příkladů je telneting k portu MySQL). Jak uvádí chybová zpráva, uživatel správce databáze musí problém vymazat FLUSH HOSTS; .

Poznámka:

Další informace o chybách připojení najdete v blogovém příspěvku Prošetřování problémů s připojením flexibilního serveru Azure Database for MySQL.

Další krok