Diagnostica dei problemi

Questa pagina contiene un elenco dei problemi più frequenti che potresti riscontrare quando lavori con le istanze Cloud SQL, nonché i passaggi che puoi seguire per risolverli. Inoltre, esamina le pagine Problemi noti, Risoluzione dei problemi e Assistenza.

Visualizza i log

Per vedere le informazioni sulle operazioni recenti, puoi visualizzare i log delle operazioni delle istanze Cloud SQL o i log degli errori MySQL.

L'istanza non risponde

Se l'istanza smette di rispondere alle connessioni o le prestazioni sono ridotte, assicurati che sia conforme alle linee guida operative. Se non è conforme a queste linee guida, non è coperto dallo SLA di Cloud SQL.

Problemi di connessione

Consulta la pagina Debug dei problemi di connessione o la sezione Connettività nella pagina di risoluzione dei problemi per assistenza in caso di problemi di connessione.

Problemi relativi all'istanza

Backup

Per ottenere prestazioni ottimali per i backup, limita il numero di tabelle a un numero ragionevole.

Per altri problemi relativi ai backup, consulta la sezione Backup nella pagina di risoluzione dei problemi.

Importazione ed esportazione

Le importazioni/esportazioni in Cloud SQL sono come utilizzare l'utilità mysqldump, ad eccezione del fatto che con la funzionalità di importazione/esportazione di Cloud SQL i dati vengono trasferiti utilizzando un bucket Cloud Storage.

Il completamento delle importazioni in Cloud SQL e delle esportazioni da Cloud SQL può richiedere molto tempo, a seconda delle dimensioni dei dati in elaborazione. Ciò può avere i seguenti effetti:

  • Non puoi arrestare un'operazione di un'istanza Cloud SQL a lunga esecuzione.
  • Puoi eseguire una sola operazione di importazione o esportazione alla volta per ogni istanza e un'operazione di importazione o esportazione a lunga esecuzione blocca altre operazioni, come i backup automatici giornalieri. Le esportazioni serverless ti consentono di eseguire altre operazioni, tra cui la modifica delle istanze, l'importazione, il failover e lo sblocco dei backup automatici giornalieri.

Puoi ridurre il tempo necessario per completare ogni operazione utilizzando la funzionalità di importazione o esportazione di Cloud SQL con batch di dati più piccoli.

Per le esportazioni, puoi eseguire l'esportazione da una replica di lettura o utilizzare l'esportazione serverless per ridurre al minimo l'impatto sulle prestazioni del database e consentire l'esecuzione di altre operazioni sull'istanza mentre è in esecuzione un'esportazione.

Altri aspetti da tenere presenti durante l'importazione:

  • Se l'importazione si arresta in modo anomalo, la causa potrebbe essere un errore di esaurimento della memoria (OOM). In questo caso, puoi provare a utilizzare direttamente i comandi MySQL per aggiungere i parametri --extended-insert=FALSE --complete-insert. Questi parametri riducono la velocità dell'importazione, ma riducono anche la quantità di memoria richiesta.

Per altri problemi di importazione ed esportazione, consulta la sezione Importazione ed esportazione nella pagina di risoluzione dei problemi.

Spazio sul disco

Se l'istanza raggiunge la quantità massima di archiviazione consentita, le scritture sul database non riescono. Se elimini i dati, ad esempio eliminando una tabella, lo spazio liberato non viene riportato nello spazio di archiviazione utilizzato indicato nell'istanza. Per una spiegazione di questo comportamento, consulta le domande frequenti Come faccio a rivendicare lo spazio da una tabella eliminata?.

Il raggiungimento del limite massimo di spazio di archiviazione può anche causare il blocco dell'istanza durante il riavvio.

Evitare il danneggiamento dei dati

Evita le colonne generate

A causa di un problema in MySQL, l'utilizzo delle colonne generate potrebbe danneggiare i dati. Per ulteriori informazioni, consulta il bug di MySQL n. 82736.

Pulisci chiusure

Quando Cloud SQL arresta un'istanza (ad esempio per manutenzione), non vengono inviate nuove connessioni all'istanza e le connessioni esistenti vengono terminate. Il tempo di arresto di mysqld è limitato a 1 minuto. Se l'arresto non viene completato entro questo periodo di tempo, il processo mysqld viene arrestato forzatamente. Ciò può causare l'interruzione delle scritture del disco a metà.

Motori di database

InnoDB è l'unico motore di archiviazione supportato per le istanze MySQL in quanto è più resistente al danneggiamento della tabella rispetto ad altri motori di archiviazione MySQL, come MyISAM.

Per impostazione predefinita, le tabelle di database Cloud SQL vengono create utilizzando il motore di archiviazione InnoDB. Se la sintassi CREATE TABLE include un'opzione ENGINE che specifica un motore di archiviazione diverso da InnoDB, ad esempio ENGINE = MyISAM, la tabella non viene creata e vengono visualizzati messaggi di errore come quelli nell'esempio seguente:

ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).

Puoi evitare questo errore rimuovendo l'opzione ENGINE = MyISAM dal comando CREATE TABLE. In questo modo viene creata la tabella con il motore di archiviazione InnoDB.

Modifiche alle tabelle di sistema

Le tabelle di sistema MySQL utilizzano il motore di archiviazione MyISAM, incluse tutte le tabelle nel database mysql, ad esempio mysql.user e mysql.db. Queste tabelle sono vulnerabili ad arresti anomali sporchi; esegui il comando FLUSH CHANGES dopo aver apportato modifiche a queste tabelle. Se si verifica il danneggiamento di MyISAM, CHECK TABLE e REPAIR TABLE possono ripristinare lo stato corretto (ma non salvare i dati).

Identificatori transazione globali (GTID)

GTID è abilitato automaticamente in tutte le istanze MySQL. L'abilitazione di GTID protegge dalla perdita di dati durante la creazione e il failover della replica e rende la replica più solida. Tuttavia, GTID presenta alcune limitazioni imposte da MySQL, come documentato nel manuale di MySQL. Le seguenti operazioni non sicure dal punto di vista transazionale non possono essere utilizzate con un server MySQL abilitato per GTID:

  • CREATE TABLE ... SELECT istruzioni;
  • CREATE TEMPORARY TABLE istruzioni all'interno delle transazioni;
  • Transazioni o istruzioni che influiscono sulle tabelle transazionali e non.

Se utilizzi una transazione non sicura, viene visualizzato un messaggio di errore come il seguente esempio:

 Exception: SQLSTATE[HY000]: General error: 1786
 CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.

Utilizzare trigger e funzioni archiviate

Se per l'istanza è abilitato il logging binario e devi utilizzare attivatori o funzioni archiviate, assicurati che il flag log_bin_trust_function_creators dell'istanza sia impostato su on.

Stato sospeso

Esistono vari motivi per cui Cloud SQL può sospendere un'istanza, tra cui:

  • Problemi di fatturazione

    Ad esempio, se la carta di credito per l'account di fatturazione del progetto è scaduta, l'istanza potrebbe essere sospesa. Per verificare i dati di fatturazione di un progetto, accedi alla pagina Fatturazione della console Google Cloud, seleziona il progetto e visualizza i dati dell'account di fatturazione utilizzati per il progetto. Dopo aver risolto il problema di fatturazione, l'istanza torna allo stato eseguibile entro alcune ore.

  • Problemi relativi alle chiavi KMS

    Ad esempio, se la versione della chiave KMS utilizzata per criptare i dati utente nell'istanza Cloud SQL non è presente o se è stata disabilitata o eliminata. Vedi Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK).

  • Problemi legali

    Ad esempio, una violazione delle Norme di utilizzo accettabile di Google Cloud può comportare la sospensione dell'istanza. Per maggiori informazioni, consulta la sezione "Sospensioni e rimozioni" nei Termini di servizio di Google Cloud.

  • Problemi operativi

    Ad esempio, se un'istanza è bloccata in un loop di arresto anomalo (si arresta in modo anomalo all'avvio o subito dopo l'avvio), Cloud SQL potrebbe sospenderla.

Mentre un'istanza è sospesa, puoi continuare a visualizzarne le relative informazioni o eliminarla, se la sospensione è stata attivata da problemi di fatturazione.

Gli utenti di Cloud SQL con pacchetti di assistenza Platinum, Gold o Silver possono contattare direttamente il nostro team di assistenza in merito alle istanze sospese. Tutti gli utenti possono utilizzare le indicazioni precedenti insieme al forum google-cloud-sql.

Prestazioni

Panoramica

Cloud SQL supporta i carichi di lavoro che richiedono alte prestazioni,con un massimo di 60.000 IOPS e senza costi aggiuntivi per I/O. Le prestazioni di IOPS e velocità effettiva dipendono, tra gli altri fattori, dalle dimensioni del disco, dal numero di vCPU delle istanze e dalla dimensione del blocco I/O.

Le prestazioni dell'istanza dipendono anche dalla scelta del tipo di archiviazione e dal carico di lavoro.

Scopri di più su:

Abilita log delle query

Per ottimizzare le prestazioni delle query, puoi configurare Cloud SQL in modo da registrare le query lente aggiungendo i flag di database --log_output='FILE' e --slow_query_log=on all'istanza. In questo modo l'output di log è disponibile utilizzando il visualizzatore log nella console Google Cloud. Tieni presente che si applicano i costi di logging di Google Cloud Observability.

Non impostare log_output su TABLE. Ciò potrebbe causare problemi di connessione come descritto in Suggerimenti per l'utilizzo dei flag.

Puoi fare riferimento a questo tutorial per istruzioni su come registrare e monitorare le query lente di Cloud SQL per MySQL utilizzando Cloud Logging e Monitoring.

Abilita monitoraggio serrature

I monitor InnoDB forniscono informazioni sullo stato interno del motore di archiviazione InnoDB, utilizzabili nell'ottimizzazione delle prestazioni.

Accedi all'istanza utilizzando il client MySQL e ottieni l'output del monitoraggio on demand:

SHOW ENGINE INNODB STATUS\G

Per le spiegazioni delle sezioni relative all'output del monitoraggio, consulta InnoDB Standard Monitor and Lock Monitor Output.

Puoi abilitare i monitoraggi InnoDB in modo che l'output venga generato periodicamente su un file o una tabella, con un peggioramento delle prestazioni. Per ulteriori informazioni, consulta Abilitazione dei monitor InnoDB.

Utilizza schema delle prestazioni

MySQL Performance Schema è una funzionalità per monitorare l'esecuzione di MySQL Server a basso livello. Il modo più accessibile per utilizzare le statistiche generate in performance_schema è tramite la funzionalità Report sulle prestazioni di MySQL Workbench.

Mantieni un numero ragionevole di tabelle di database

Le tabelle di database consumano risorse di sistema. Un numero elevato può influire sulle prestazioni e sulla disponibilità dell'istanza e causare la perdita della copertura SLA dell'istanza. Scopri di più.

Suggerimenti generali per il rendimento

. In caso di operazioni di inserimento, aggiornamento o eliminazione lenti dei database, prendi in considerazione le seguenti azioni:
  • Controlla le posizioni dello writer e del database; l'invio di dati a lunga distanza introduce la latenza.

Per una selezione lenta dei database, considera quanto segue:

  • La memorizzazione nella cache è importante per le prestazioni di lettura. Confronta la dimensione del tuo set di dati con la dimensione della RAM dell'istanza. Idealmente, l'intero set di dati rientra nel 70% della RAM dell'istanza, nel qual caso le query non sono vincolate alle prestazioni dell'IO. In caso contrario, valuta la possibilità di aumentare le dimensioni della RAM dell'istanza.
  • Se il carico di lavoro è costituito da query che richiedono un uso intensivo della CPU (ordinamento, espressioni regolari, altre funzioni complesse), la tua istanza potrebbe essere limitata e, quindi, potrebbe aumentare il numero di vCPU.
  • Controlla la posizione del lettore e del database: la latenza influisce sulle prestazioni di lettura ancor più di quelle di scrittura.
  • Esamina i miglioramenti delle prestazioni specifici non per Cloud SQL, come l'aggiunta di un'indicizzazione appropriata, la riduzione dei dati analizzati ed evitando ulteriori round trip.
  • Se noti un rendimento scarso durante l'esecuzione di query, utilizza EXPLAIN. EXPLAIN è un'istruzione che aggiungi ad altre istruzioni, come SELECT, e restituisce informazioni su come MySQL esegue l'istruzione. Funziona con SELECT, DELETE, INSERT, REPLACE e UPDATE. Ad esempio: EXPLAIN SELECT * FROM myTable;.

    Usa EXPLAIN per capire dove puoi:

    • Aggiungi indici alle tabelle per migliorare le prestazioni delle query. Ad esempio, assicurati che ogni campo che utilizzi come chiave JOIN abbia un indice in entrambe le tabelle.

    • Migliora le operazioni di ORDER BY. Se EXPLAIN mostra "Utilizzo temporaneo; utilizzo di filesort" nella colonna Extra dell'output, i risultati intermedi vengono archiviati in un file che viene quindi ordinato, il che di solito comporta uno scarso rendimento. In questo caso, esegui uno dei seguenti passaggi:

      • Se possibile, utilizza gli indici anziché ordinare i dati. Per ulteriori informazioni, consulta Ottimizzazione ORDINE PER.

      • Aumenta la dimensione della variabile sort_buffer_size per la sessione di query.

      • Utilizza meno RAM per riga dichiarando le colonne solo delle dimensioni necessarie.

    Risolvere i problemi

    Per altri problemi di Cloud SQL, consulta la pagina per la risoluzione dei problemi.

    Messaggi di errore

    Per messaggi di errore specifici relativi all'API, consulta la pagina di riferimento Messaggi di errore.

    Risolvere i problemi relativi alle chiavi di crittografia gestite dal cliente (CMEK)

    Le operazioni dell'amministratore di Cloud SQL, come la creazione, la clonazione o l'aggiornamento, potrebbero non riuscire a causa di errori di Cloud KMS e di ruoli o autorizzazioni mancanti. Le cause comuni degli errori includono una versione mancante della chiave Cloud KMS, una versione della chiave Cloud KMS disabilitata o eliminata, autorizzazioni IAM insufficienti per accedere alla versione della chiave Cloud KMS o la versione della chiave Cloud KMS si trova in una regione diversa rispetto all'istanza Cloud SQL. Utilizza la seguente tabella di risoluzione dei problemi per diagnosticare e risolvere i problemi più comuni.

    Tabella per la risoluzione dei problemi relativi alle chiavi di crittografia gestite dal cliente

    Per questo errore... Il problema potrebbe essere... Prova questa procedura...
    Account di servizio per prodotto e progetto non trovato Il nome dell'account di servizio non è corretto. Assicurati di aver creato un account di servizio per il progetto utente corretto.

    VAI ALLA PAGINA ACCOUNT DEL SERVIZIO.

    Impossibile concedere l'accesso all'account di servizio L'account utente non dispone dell'autorizzazione per concedere l'accesso a questa versione della chiave. Aggiungi il ruolo Amministratore organizzazione al tuo account utente o di servizio.

    VAI ALLA PAGINA ACCOUNT IAM

    La versione della chiave Cloud KMS è stata eliminata La versione della chiave è stata eliminata. Se la versione della chiave viene eliminata, non puoi utilizzarla per criptare o decriptare i dati.
    La versione della chiave Cloud KMS è disabilitata La versione della chiave è disabilitata. Riattiva la versione della chiave Cloud KMS.

    VAI ALLA PAGINA CRYPTO KEYS

    Autorizzazione insufficiente per utilizzare la chiave Cloud KMS Il ruolo cloudkms.cryptoKeyEncrypterDecrypter non è presente nell'account utente o di servizio che stai utilizzando per eseguire operazioni sulle istanze Cloud SQL oppure la versione della chiave Cloud KMS non esiste. Aggiungi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo account utente o di servizio.

    VAI ALLA PAGINA ACCOUNT IAM


    Se il ruolo è già presente nel tuo account, consulta Creazione di una chiave per scoprire come creare una nuova versione della chiave. Vedi nota.
    Chiave Cloud KMS non trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Vedi Creazione di una chiave. Vedi nota.
    L'istanza Cloud SQL e la versione della chiave Cloud KMS si trovano in regioni diverse La versione della chiave Cloud KMS e l'istanza Cloud SQL devono trovarsi nella stessa regione. Non funziona se la versione della chiave Cloud KMS si trova in una regione globale o in più regioni. Crea una versione della chiave nella stessa regione in cui vuoi creare le istanze. Consulta la sezione Creazione di una chiave. Vedi nota.

    Tabella per la risoluzione dei problemi relativi alla ricrittografia

    Per questo errore... Il problema potrebbe essere... Prova questa procedura...
    La ricrittografia della risorsa CMEK non è riuscita perché la chiave Cloud KMS non è accessibile. Assicurati che la versione della chiave primaria sia abilitata e l'autorizzazione sia stata concessa correttamente. La versione della chiave non è abilitata o non dispone delle autorizzazioni corrette.

    Riattiva la versione della chiave Cloud KMS:

    VAI ALLA PAGINA CRYPTO KEYS

    Verifica che le autorizzazioni siano corrette:

    VAI ALLA PAGINA ACCOUNT IAM

    Ricrittografia della risorsa CMEK non riuscita a causa di un errore interno del server. Riprova più tardi Si è verificato un errore interno del server. Riprova a eseguire la ricrittografia. Per maggiori informazioni, consulta Ricriptare un'istanza o una replica abilitata per CMEK esistente