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

PLATÍ PRO: Flexibilní server Azure Database for MySQL – Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem 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 se chyby týkají pouze jednoho z několika klientů, je pravděpodobné, že problém je na straně tohoto klienta. Pokud však u všech klientů dochází ke stejné chybě, je pravděpodobnější, že problém je na straně databázového serveru nebo v síti mezi nimi.

Nezapomeňte také zvážit možnost přetížení úloh, zejména pokud aplikace otevře ve velmi krátkém čase velké množství připojení. 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.).

Kódy chyb na straně klienta 2005

V následující tabulce jsou uvedeny stručné referenční poznámky k některým kódům chyb 2005 na straně klienta.

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. To je velmi pravděpodobné, že 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 zobrazení chybové zprávy, jako je 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.).

Kódy chyb na straně klienta 2003

V následující tabulce jsou uvedeny stručné referenční poznámky k některým kódům chyb 2003 na straně klienta.

CHYBA 2003 – kód Poznámky
(99) EADDRNOTAVAIL – Nelze přiřadit požadovanou adresu Tato chyba není způsobená flexibilním serverem Azure Database for MySQL, spíše je 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. Může to také souviset s tím, že cílová služba (flexibilní server Azure Database for MySQL) nefunguje, obnovuje se z převzetí služeb při selhání nebo prochází zotavením po havárii a zatím nepřijímají 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 je uvedeno v chybové zprávě, k odstranění problému je uživatel uživatel s rolí správce databáze musí spustit 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ší kroky

Pokud chcete najít partnerské odpovědi na nejdůležitější otázky nebo publikovat nebo odpovědět na otázku, navštivte web Stack Overflow.