Condividi tramite


Risolvere i problemi di connettività nel server flessibile del Database di Azure per MySQL.

SI APPLICA A:server singolo di Database di Azure per MySQL Server flessibile di Database di Azure per MySQL

Importante

Il server singolo del Database di Azure per MySQL è in fase di ritiro. È consigliabile eseguire l'aggiornamento al server flessibile del Database di Azure per MySQL. Per altre informazioni sulla migrazione a Database di Azure per MySQL - Server flessibile, vedere Cosa succede a Database di Azure per MySQL - Server singolo?

MySQL Community Edition gestisce le connessioni usando un thread per ogni connessione. Di conseguenza, ogni connessione utente ottiene un thread del sistema operativo dedicato nel processo mysqld.

Esistono potenziali problemi associati a questo tipo di gestione delle connessioni. Ad esempio, l'uso della memoria è relativamente elevato se è presente un numero elevato di connessioni utente, anche se si tratta di connessioni inattive. Inoltre, esiste un livello superiore di contesa interna del server e di sovraccarico del cambio di contesto quando si lavora con migliaia di connessioni utente.

Diagnosticare gli errori di connettività comuni

Ogni volta che si verificano problemi di connettività nell'istanza del server flessibile di Database di Azure per MySQL, tenere presente che i problemi possono verificarsi in uno dei tre livelli coinvolti: il dispositivo client, la rete o l'istanza del server flessibile di Database di Azure per MySQL.

Di conseguenza, ogni volta che si diagnosticano errori di connettività, assicurarsi di prendere in considerazione i dettagli completi di:

  • Client, tra cui:
    • Configurazione (locale, macchina virtuale di Azure e così via o computer DBA).
    • Sistema operativo.
    • Software e versioni.
  • Stringa di connessione ed eventuali parametri inclusi.
  • Topologia di rete (stessa area? regole del firewall AZ? routing).
  • Pool di connessioni (parametri e configurazione), se ce ne sono in uso.

È anche importante determinare se il problema di connettività del database influisce su un singolo dispositivo client o su più dispositivi client. Se gli errori interessano solo uno dei diversi client, è probabile che il problema si verifichi con il client. Tuttavia, se tutti i client riscontrano lo stesso errore, è più probabile che il problema si trovi sul lato server di database o con la rete.

Assicurarsi di considerare anche il potenziale di overload del carico di lavoro, soprattutto se un'applicazione apre un picco di connessioni in un periodo di tempo molto breve. È possibile usare le metriche, ad esempio “Connessioni totali”, “Connessioni attive” e “Connessioni interrotte” per esaminarlo.

Quando si stabilisce la connettività da un dispositivo client o da un'applicazione, la prima chiamata importante in mysql consiste nell’ottenere addrinfo, che esegue la conversione DNS dall'endpoint fornito a un indirizzo IP. Se il recupero dell'indirizzo ha esito negativo, MySQL visualizza un messaggio di errore, ad esempio "ERRORE 2005 (HY000): host server MySQL sconosciuto "mysql-example.mysql.database.azure.com" (11)" e il numero alla fine (11, 110 e così via).

Codici errore lato client 2005

Le note di riferimento rapido per alcuni codici di errore sul lato client 2005 vengono visualizzate nella tabella seguente.

Codice ERRORE 2005 Note
(11) "EAI_SYSTEM - errore di sistema" Si è verificato un errore nella risoluzione DNS sul lato client. Non è un problema per un server flessibile di Database di Azure per MySQL Usare dig/nslookup nel client per risolvere i problemi.
(110) "ETIMEDOUT - timeout Connessione" Si è verificato un timeout nella connessione al server DNS del client. Non è un problema per un server flessibile di Database di Azure per MySQL Usare dig/nslookup nel client per risolvere i problemi.
(0) "nome sconosciuto" Il nome specificato non è stato risolvibile da DNS. Verificare l'input nel client. È molto probabile che non si verifichi un problema con il server flessibile di Database di Azure per MySQL.

La seconda chiamata in mysql è con connettività socket e quando si esamina un messaggio di errore simile a "ERROR 2003 (HY000): Can't connect to Azure Database for MySQL flexible server on 'mysql-example.mysql.database.azure.com' (111)", the number in the end (99, 110, 111, 113, etc.).

Codici di errore sul lato client 2003

Le note di riferimento rapido per alcuni codici di errore sul lato client 2003 vengono visualizzate nella tabella seguente.

Codice ERRORE 2003 Note
(99) "EADDRNOTAVAIL - Impossibile assegnare l'indirizzo richiesto" Questo errore non è causato dal server flessibile di Database di Azure per MySQL, ma dal lato client.
(110) "ETIMEDOUT - timeout Connessione" Si è verificato un timeout di connessione all'indirizzo IP specificato. È probabile che si tratti di un problema di sicurezza (regole del firewall) o di rete (routing). Di solito, non si tratta di un problema con il server flessibile di Database di Azure per MySQL. Usare nc/telnet/TCPtraceroute nel dispositivo client per risolvere i problemi.
(111) "ECONNREFUSED - Connessione rifiutata" Mentre i pacchetti hanno raggiunto il server di destinazione, il server ha rifiutato la connessione. Potrebbe trattarsi di un tentativo di connessione al server errato o alla porta errata. Questo potrebbe anche essere correlato al servizio di destinazione (server flessibile di Database di Azure per MySQL) inattivo, al ripristino dal failover o all'esecuzione del ripristino anomalo del sistema e non ancora all'accettazione delle connessioni. Questo problema potrebbe trovarsi sul lato client o sul lato server. Usare nc/telnet/TCPtraceroute nel dispositivo client per risolvere i problemi.
(113) "EHOSTUNREACH - Host non raggiungibile" La tabella di routing del dispositivo client non include un percorso alla rete in cui si trova il server di database. Controllare la configurazione di rete del dispositivo client.

Altri codici di errore

Le note di riferimento rapido per alcuni altri codici di errore correlati ai problemi che si verificano dopo che la connessione di rete con il server di database è stata stabilita correttamente, vengono visualizzate nella tabella seguente.

Codice errore Note
ERRORE 2013 "Connessione a MySQL persa" La connessione è stata stabilita, ma è stata persa in seguito. Questo può verificarsi se viene tentata una connessione a un elemento che non è MySQL, ad esempio, usando un client MySQL per connettersi a SSH sulla porta 22. Può verificarsi anche se l'utente con privilegi avanzati termina la sessione. Può verificarsi anche se il database raggiunge il timeout della sessione. In alternativa, può fare riferimento a problemi nel server di database, dopo aver stabilito la connessione. Questo può verificarsi in qualsiasi momento durante la durata della connessione client. Può indicare che il database ha avuto un problema grave.
ERRORE 1040 "Troppe connessioni" Il numero di client di database connessi è già al numero massimo configurato. È necessario valutare il motivo per cui vengono stabilite così tante connessioni sul database.
ERRORE 1045 "Accesso negato per l'utente" Il client ha fornito un nome utente o una password non corretti, pertanto, il database ha negato l'accesso.
ERRORE 2006 "MySQL server non è disponibile" Analogamente alla voce ERRORE 2013 "Connessione a MySQL server persa" nella tabella precedente.
ERRORE 1317 "L'esecuzione della query è stata interrotta" Errore che il client riceve quando l'utente primario arresta la query, non la connessione.
L'ERRORE 1129 "Host '1.2.3.4' è bloccato a causa di molti errori di connessione” Sblocco con "mysqladmin flush-hosts": tutti i client in un singolo computer verranno bloccati se un client di tale computer tenta più volte di usare il protocollo errato per connettersi a MySQL (telnetting alla porta MySQL è un esempio). Come viene visualizzato il messaggio di errore, l'utente amministratore del database deve eseguire FLUSH HOSTS; per cancellare il problema.

Nota

Per altre informazioni sugli errori di connettività, vedere il post di blog Analisi dei problemi di connessione con il server flessibile di Database di Azure per MySQL.

Passaggi successivi

Per trovare risposte di peer alle domande più importanti o per pubblicare o rispondere a una domanda, visitare Stack Overflow.