Diagnostica dei problemi

Questa pagina contiene un elenco dei problemi più frequenti che potresti riscontrare quando lavori con le istanze Cloud SQL e dei passaggi che puoi intraprendere per risolverli. Consulta anche le pagine Problemi noti, Risoluzione dei problemi e Assistenza.

Visualizza i log

Per visualizzare informazioni sulle operazioni recenti, puoi visualizzare i log delle operazioni dell'istanza Cloud SQL o i log degli errori di MySQL.

L'istanza non risponde

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

Problemi di connessione

Per assistenza con i problemi di connessione, consulta la pagina Risoluzione dei problemi di connessione o la sezione Connettività nella pagina di risoluzione dei problemi.

Problemi relativi all'istanza

Backup

Per ottenere le migliori prestazioni per i backup, mantieni un numero ragionevole di tabelle.

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

Importazione ed esportazione

Le importazioni e le esportazioni in Cloud SQL sono uguali all'utilizzo dell'utilità mysqldump, tranne per il fatto che con la funzionalità di importazione/esportazione di Cloud SQL, i dati vengono trasferiti utilizzando un bucket Cloud Storage.

L'importazione in Cloud SQL e l'esportazione da Cloud SQL possono richiedere molto tempo, a seconda delle dimensioni dei dati in fase di elaborazione. Questo può avere i seguenti impatti:

  • Non puoi interrompere un'operazione di lunga durata dell'istanza Cloud SQL.
  • Puoi eseguire una sola operazione di importazione o esportazione alla volta per ogni istanza e un'importazione o un'esportazione di lunga durata importa o esporta blocchi 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 esportazione serverless per ridurre al minimo l'impatto sulle prestazioni del database e consentire l'esecuzione di altre operazioni sull'istanza durante l'esecuzione di un'esportazione.

Altri punti da tenere presenti durante l'importazione:

  • Se l'importazione si arresta in modo anomalo, potrebbe essere dovuto a un errore di memoria insufficiente (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à di importazione, ma anche la quantità di memoria richiesta dall'importazione.

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 spazio di archiviazione consentita, le scritture nel database non vanno a buon fine. Se elimini i dati, ad esempio eliminando una tabella, lo spazio liberato non viene visualizzato nello spazio di archiviazione utilizzato dell'istanza. Per una spiegazione di questo comportamento, consulta le Domande frequenti Come posso recuperare 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.

Evita il danneggiamento dei dati

Evita le colonne generate

A causa di un problema in MySQL, l'utilizzo di colonne generate potrebbe causare il danneggiamento dei dati. Per saperne di più, consulta il bug di MySQL n. 82736.

Arresti puliti

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

Motori di database

InnoDB è l'unico motore di archiviazione supportato per le istanze MySQL perché è più resistente al danneggiamento delle tabelle 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'ENGINE opzione 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 il seguente esempio:

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, la tabella viene creata 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 mysql database, ad esempio mysql.user e mysql.db. Queste tabelle sono vulnerabili agli arresti non puliti; esegui il comando FLUSH CHANGES dopo aver apportato modifiche a queste tabelle. Se si verifica un danneggiamento di MyISAM, CHECK TABLE e REPAIR TABLE possono riportare il sistema a uno stato corretto (ma non salvare i dati).

Identificatori di transazione globale (GTID)

Tutte le istanze MySQL hanno GTID abilitato automaticamente. L'abilitazione di GTID protegge dalla perdita di dati durante la creazione e il failover della replica e rende la replica più affidabile. Tuttavia, GTID presenta alcune limitazioni imposte da MySQL, come documentato nel manuale di MySQL. Le seguenti operazioni non sicure a livello di transazione non possono essere utilizzate con un server MySQL abilitato per GTID:

  • Istruzioni CREATE TABLE ... SELECT;
  • Istruzioni CREATE TEMPORARY TABLE all'interno delle transazioni;
  • Transazioni o istruzioni che interessano sia le tabelle transazionali che quelle non transazionali.

Se utilizzi una transazione non sicura a livello di transazione, 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.

Utilizza trigger e funzioni memorizzate

Se l'istanza ha la registrazione binaria abilitata e devi utilizzare trigger o funzioni memorizzate, assicurati che l'istanza abbia il log_bin_trust_function_creators flag impostato su on.

Stato sospeso

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

Mentre un'istanza è sospesa, puoi continuare a visualizzare le informazioni o eliminarla, se i problemi di fatturazione hanno attivato la sospensione.

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 google-cloud-sql forum.

Prestazioni

Panoramica

Cloud SQL supporta i carichi di lavoro che richiedono alte prestazioni,fino a un massimo di 60.000 IOPS e senza costi aggiuntivi per I/O. Le prestazioni in termini di IOPS e throughput dipendono, tra gli altri fattori, dalle dimensioni del disco, dal numero di vCPU dell'istanza e dalle dimensioni dei blocchi di I/O.

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

Scopri di più su:

Abilita i log delle query

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

Non impostare log_output su TABLE. In questo modo, possono verificarsi problemi di connessione come descritto in Suggerimenti per l'utilizzo dei flag.

Per istruzioni su come registrare e monitorare le query lente di Cloud SQL per MySQL utilizzando Cloud Logging and Monitoring, consulta this tutorial.

Abilita il monitoraggio dei blocchi

I monitor InnoDB forniscono informazioni sullo stato interno del motore di archiviazione InnoDB, che puoi utilizzare per l'ottimizzazione delle prestazioni.

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

SHOW ENGINE INNODB STATUS\G

Per le spiegazioni delle sezioni dell'output del monitor, consulta Output del monitor standard InnoDB e del monitor dei blocchi.

Puoi abilitare i monitor InnoDB in modo che l'output venga generato periodicamente in un file o in una tabella, con un peggioramento delle prestazioni. Per saperne di più, consulta Abilitazione dei monitor InnoDB.

Utilizza lo schema delle prestazioni

Lo schema delle prestazioni di MySQL è una funzionalità per il monitoraggio dell'esecuzione di MySQL Server a un 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 dello SLA dell'istanza. Scopri di più.

Suggerimenti generali per le prestazioni

. Per inserimenti, aggiornamenti o eliminazioni di database lenti, valuta le seguenti azioni:
  • Controlla le località del writer e del database; l'invio di dati a lunga distanza introduce la latenza.

Per le selezioni di database lente, valuta quanto segue:

  • La memorizzazione nella cache è importante per le prestazioni di lettura. Confronta le dimensioni del set di dati con le dimensioni 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 di I/O. 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 utilizzo intensivo della CPU (ordinamento, espressioni regolari, altre funzioni complesse), l'istanza potrebbe essere limitata; aumenta le vCPU.
  • Controlla la località del lettore e del database: la latenza influisce sulle prestazioni di lettura ancora più che sulle prestazioni di scrittura.
  • Esamina i miglioramenti delle prestazioni non specifici di Cloud SQL, ad esempio l'aggiunta di un'indicizzazione appropriata, la riduzione dei dati scansionati e l'evitare round trip aggiuntivi.
  • Se noti prestazioni scadenti durante l'esecuzione delle 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;.

    Utilizza EXPLAIN per identificare dove puoi:

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

    • Migliorare le operazioni ORDER BY. Se EXPLAIN mostra "Using temporary; Using filesort" nella colonna Extra dell'output, i risultati intermedi vengono archiviati in un file che viene poi ordinato, il che in genere comporta prestazioni scadenti. In questo caso, esegui una delle seguenti operazioni:

      • Se possibile, utilizza gli indici anziché l'ordinamento. Per saperne di più, consulta Ottimizzazione di ORDER BY per maggiori informazioni.

      • Aumenta le dimensioni della sort_buffer_size variabile per la sessione di query.

      • Utilizza meno RAM per riga dichiarando le colonne solo in base alle dimensioni richieste.

    Risoluzione dei problemi

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

    Messaggi di errore

    Per i messaggi di errore API specifici, consulta la pagina di riferimento Messaggi di errore.

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

    Le operazioni di amministrazione 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. I motivi comuni di errore includono una versione della chiave Cloud KMS mancante, 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 dall'istanza Cloud SQL. Utilizza la seguente tabella di risoluzione dei problemi per diagnosticare e risolvere i problemi comuni.

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

    Per questo errore... Il problema potrebbe essere... Prova...
    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 DI 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 dell'organizzazione al tuo account utente o all'account 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. Riabilita la versione della chiave Cloud KMS.

    VAI ALLA PAGINA CHIAVI DI CRITTOGRAFIA

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

    VAI ALLA PAGINA ACCOUNT IAM


    Se il ruolo è già stato concesso al tuo account, consulta Creazione di una chiave per scoprire come creare una nuova versione della chiave. Consulta la nota.
    La chiave Cloud KMS non è stata trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Consulta Creazione di una chiave. Consulta la nota.
    La chiave EKM non è raggiungibile La chiave External Key Manager (EKM) non è raggiungibile per diverse ore. Anche dopo più tentativi, la chiave EKM rimane non raggiungibile. Verifica lo stato della connessione EKM e risolvi il problema con il tuo provider EKM.

    VAI ALLA PAGINA CHIAVI DI CRITTOGRAFIA

    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 multiregionale. Crea una versione della chiave nella stessa regione in cui vuoi creare le istanze. Consulta Creazione di una chiave. Consulta la nota.
    La versione della chiave Cloud KMS viene ripristinata, ma l'istanza rimane sospesa alcuni minuti dopo. Il processo di convalida interno per l'istanza può richiedere fino a 10 minuti prima che l'istanza torni disponibile. Attendi 10 minuti prima che l'istanza diventi disponibile.
    La versione della chiave Cloud KMS viene ripristinata, ma l'istanza rimane sospesa più di 10 minuti dopo. La versione della chiave è disabilitata o non concede le autorizzazioni corrette. Riabilita la versione della chiave e concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo account utente o di servizio nel Google Cloud progetto che ospita la chiave.

    Tabella di risoluzione dei problemi di ricrittografia

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

    Riabilita la versione della chiave Cloud KMS:

    VAI ALLA PAGINA CHIAVI DI CRITTOGRAFIA

    Nel Google Cloud progetto che ospita la chiave, verifica che il ruolo cloudkms.cryptoKeyEncrypterDecrypter sia stato concesso al tuo account utente o di servizio:

    VAI ALLA PAGINA ACCOUNT IAM

    La 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 saperne di più, consulta Ricrittografare un'istanza o una replica esistente abilitata per CMEK