Diagnostica dei problemi

Questa pagina contiene un elenco dei problemi più frequenti che potresti riscontrare quando utilizzi le istanze Cloud SQL e i passaggi che puoi svolgere per risolverli. Consulta anche le pagine Problemi noti, Risoluzione dei problemi e Pagina di 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 MySQL.

L'istanza non risponde

Se l'istanza smette di rispondere alle connessioni o il rendimento è ridotto, 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

Per assistenza in caso di problemi di connessione, consulta la pagina Risoluzione dei problemi di connessione o la sezione Collegamenti nella pagina di risoluzione dei problemi.

Problemi dell'istanza

Backup

Per ottenere le migliori prestazioni per i backup, mantieni 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 e le esportazioni in Cloud SQL sono le stesse che si ottengono utilizzando l'utilità mysqldump, tranne per il fatto che con la funzionalità di importazione/esportazione di Cloud SQL puoi trasferire i dati utilizzando un bucket Cloud Storage.

Le importazioni in Cloud SQL e le esportazioni da Cloud SQL possono richiedere molto tempo, a seconda delle dimensioni dei dati elaborati. Ciò può avere i seguenti effetti:

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

Altri aspetti da tenere presente durante l'importazione:

  • Se l'importazione si arresta in modo anomalo, potrebbe essere a causa di un errore di esaurimento della memoria. 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 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 lo spazio di archiviazione massimo consentito, le scritture nel database non riescono. Se elimini i dati, ad esempio eliminando una tabella, lo spazio liberato non viene riportato nel valore Spazio di archiviazione utilizzato dell'istanza. Per una spiegazione di questo comportamento, consulta la domanda frequente Come faccio a recuperare lo spazio di una tabella eliminata?

Il raggiungimento del limite di spazio di archiviazione massimo 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 di colonne generate potrebbe comportare la corruzione dei dati. Per ulteriori informazioni, consulta MySQL bug #82736.

Arresti puliti

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

Motori del database

InnoDB è l'unico motore di archiviazione supportato per le istanze MySQL perché è più resistente alla corruzione 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'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 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 CREATE TABLE comando. In questo modo viene creata la tabella con il motore di archiviazione InnoDB.

Modifiche alle tabelle di sistema

Le tabelle di sistema di 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 a arresti anomali. Esegui il comando FLUSH CHANGES dopo aver apportato modifiche a queste tabelle. Se si verifica la corruzione di MyISAM, CHECK TABLE e REPAIR TABLE possono ripristinare lo stato corretto, ma non salvare i dati.

Global Transaction Identifier (GTID)

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

  • CREATE TABLE ... SELECT estratti conto;
  • 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, viene visualizzato un messaggio di errore come nell'esempio seguente:

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

Utilizzare gli attivatori e le funzioni memorizzate

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

Stato sospeso

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

  • Problemi di fatturazione

    Ad esempio, se la carta di credito dell'account di fatturazione del progetto è scaduta, l'istanza potrebbe essere sospesa. Puoi controllare le informazioni di fatturazione di un progetto nella pagina di fatturazione della console Google Cloud, selezionando il progetto e visualizzando i dati dell'account di fatturazione utilizzati per il progetto. Una volta risolto il problema di fatturazione, l'istanza torna allo stato di eseguibile entro alcune ore.

  • Problemi principali con Cloud Key Management Service

    Ad esempio, se la versione della chiave Cloud KMS utilizzata per criptare i dati utente nell'istanza Cloud SQL non è presente, l'accesso alla chiave viene revocato o se la chiave viene disattivata o eliminata. Per saperne di più, consulta Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK).

  • Problemi legali

    Ad esempio, una violazione delle Norme di utilizzo accettabile di Google Cloud potrebbe causare la sospensione dell'istanza. Per ulteriori informazioni, consulta la sezione "Sospensioni e rimozione" nei Termini di servizio di Google Cloud.

  • Problemi operativi

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

Mentre un'istanza è sospesa, puoi continuare a visualizzarne le 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,fino a un massimo di 60.000 IOPS e senza costi aggiuntivi per l'I/O. Le prestazioni in termini di IOPS e velocità effettiva dipendono dalle dimensioni del disco, dal numero di vCPU dell'istanza e dalle dimensioni dei blocchi I/O, tra gli altri fattori.

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

Scopri di più su:

Abilita i 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 del log sarà disponibile utilizzando il Visualizzatore dei log nella console Google Cloud. Tieni presente che si applicano i costi di registrazione di Google Cloud Observability.

Non impostare log_output su TABLE. Questa operazione può causare problemi di connessione come descritto in Consigli per l'utilizzo degli indicatori.

Puoi consultare questo tutorial per istruzioni su come registrare e monitorare le query lente di Cloud SQL per MySQL utilizzando Cloud Logging e monitoraggio.

Attiva il monitoraggio dei blocchi

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

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

SHOW ENGINE INNODB STATUS\G

Per spiegazioni delle sezioni nell'output del monitor, consulta Output di InnoDB Standard Monitor e Lock Monitor.

Puoi attivare i monitor di InnoDB in modo che l'output venga generato periodicamente in un file o in una tabella, con un degrado delle prestazioni. Per ulteriori informazioni, consulta Attivare i monitor InnoDB.

Utilizza lo schema delle prestazioni

Lo schema delle prestazioni di MySQL è una funzionalità per il monitoraggio dell'esecuzione del server MySQL a basso livello. Il modo più accessibile per utilizzare le statistiche generate in performance_schema è tramite la funzionalità Report sul rendimento 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 (accordo sul livello del servizio). Scopri di più.

Suggerimenti generali per il rendimento

. Per inserimenti, aggiornamenti o eliminazioni del database lenti, valuta le seguenti azioni:
  • Controlla le posizioni dello scrittore e del database. L'invio di dati su lunghe distanze introduce latenza.

Per le selezioni del database lente, tieni presente quanto segue:

  • La memorizzazione nella cache è importante per le prestazioni di lettura. Confronta le dimensioni del 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 I/O. In caso contrario, ti consigliamo di aumentare le dimensioni della RAM dell'istanza.
  • Se il tuo carico di lavoro è costituito da query che richiedono un'elevata intensità di CPU (ordinamento, espressioni regolari, altre funzioni complesse), l'istanza potrebbe essere limitata. Aumenta le vCPU.
  • Controlla la posizione del lettore e del database: la latenza influisce sulle prestazioni di lettura ancor più che su quelle di scrittura.
  • Esamina i miglioramenti delle prestazioni non specifici di Cloud SQL, ad esempio l'aggiunta di indicizzazione appropriata, la riduzione dei dati sottoposti a scansione e l'evitare passaggi extra.
  • 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;.

    Usa EXPLAIN per identificare dove puoi:

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

    • Migliora le operazioni ORDER BY. Se EXPLAIN mostra "Utilizzo temporaneo; utilizzo filesort" nella colonna Extra dell'output, significa che i risultati intermedi vengono archiviati in un file che viene poi ordinato, il che in genere comporta scarse prestazioni. In questo caso, segui uno dei seguenti passaggi:

      • Se possibile, utilizza gli indici anziché l'ordinamento. Per ulteriori informazioni, consulta Ottimizzazione ORDER BY.

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

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

    Risoluzione dei problemi

    Per altri problemi relativi a Cloud SQL, consulta la pagina relativa alla risoluzione dei problemi.

    Messaggi di errore

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

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

    Le operazioni di amministrazione di Cloud SQL, come creazione, clonazione o 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 disattivata o distrutta, 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 tabella di risoluzione dei problemi che segue per diagnosticare e risolvere i problemi comuni.

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

    Per questo errore… Il problema potrebbe essere… Prova a fare così…
    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 di servizio.

    VAI ALLA PAGINA ACCOUNT IAM

    La versione della chiave Cloud KMS viene eliminata La versione della chiave viene 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 utilizzi per eseguire operazioni sulle istanze Cloud SQL oppure la versione della chiave Cloud KMS non esiste. Nel progetto Google Cloud che ospita la chiave, aggiungi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo account utente o di servizio.

    VAI ALLA PAGINA ACCOUNT IAM


    Se il ruolo è già stato concesso al tuo account, consulta la sezione Creare una chiave per scoprire come creare una nuova versione della chiave. Vedi nota.
    La chiave Cloud KMS non è stata trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Consulta Creare 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 multiregionale. Crea una versione della chiave nella stessa regione in cui vuoi creare le istanze. Consulta Creare una chiave. Vedi nota.
    La versione della chiave Cloud KMS è stata ripristinata, ma l'istanza è ancora sospesa La versione della chiave è disattivata o non concede le autorizzazioni appropriate. Riattiva la versione della chiave e concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo account utente o di servizio nel progetto Google Cloud che ospita la chiave.

    Tabella per la risoluzione dei problemi relativi alla ricodificazione

    Per questo errore… Il problema potrebbe essere… Prova a fare così…
    La nuova crittografia della risorsa CMEK non è riuscita perché la chiave Cloud KMS non è accessibile. Assicurati che la versione della chiave primaria sia attivata e che l'autorizzazione sia concessa correttamente. La versione della chiave è disattivata o non concede le autorizzazioni appropriate.

    Riattiva la versione della chiave Cloud KMS:

    VAI ALLA PAGINA CRYPTO KEYS

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

    VAI ALLA PAGINA ACCOUNT IAM

    La nuova crittografia 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 crittografia. Per ulteriori informazioni, consulta Ricriptare un'istanza o una replica abilitata per CMEK esistente