Ř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.