Diagnostica dei problemi

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

Visualizza i log

Per visualizzare 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 vengono 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

Per assistenza in merito ai problemi di connessione, consulta la pagina Debug dei problemi di connessione o la sezione Connettività nella pagina relativa alla risoluzione dei problemi.

Problemi relativi all'istanza

Backup

Per ottenere le migliori prestazioni per i backup, mantieni il numero delle tabelle a un numero ragionevole.

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

Importa ed esporta

Le importazioni ed esportazioni in Cloud SQL sono le stesse dell'utilizzo dell'utilità mysqldump, con la differenza che con la funzionalità di importazione/esportazione di Cloud SQL trasferisci i dati 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 elaborati. Ciò può avere i seguenti effetti:

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

Puoi ridurre il tempo necessario per completare ogni operazione utilizzando la funzionalità di importazione o esportazione di Cloud SQL con gruppi 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 corso un'esportazione.

Altri punti da ricordare durante l'importazione:

  • Se l'importazione ha un arresto anomalo, il problema potrebbe essere dovuto all'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à di importazione, ma riducono anche la quantità di memoria richiesta.

Per altri problemi relativi all'importazione e all'esportazione, consulta la sezione Importare ed esportare nella pagina della 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 dati, ad esempio eliminando una tabella, lo spazio liberato non si riflette nello Spazio di archiviazione utilizzato segnalato dell'istanza. Consulta le domande frequenti Come posso recuperare lo spazio da una tabella eliminata? per una spiegazione di questo comportamento.

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

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 Bug MySQL n. 82736.

Pulire le chiusure

Quando Cloud SQL arresta l'istanza (ad esempio per la manutenzione), non vengono inviate nuove connessioni all'istanza e le connessioni esistenti vengono terminate. Il tempo massimo di arresto di mysqld è limitato a 1 minuto. Se l'arresto non viene completato in quel periodo, il processo mysqld viene interrotto forzatamente. Ciò può comportare l'interruzione della scrittura del disco a metà strada.

Motori di database

InnoDB è l'unico motore di archiviazione supportato per le istanze MySQL, perché è 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 di 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 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 database mysql, ad esempio mysql.user e mysql.db. Queste tabelle sono vulnerabili per l'arresto sporco. Invia il comando FLUSH CHANGES dopo aver apportato modifiche alle tabelle. Se si verifica il danneggiamento del MyISAM, CHECK TABLE e REPAIR TABLE possono ripristinare lo stato corretto (ma non salvare i dati).

GTID (Global Transaction Identifier)

In tutte le istanze di MySQL è attivato automaticamente GTID. L'attivazione 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 MySQL. Le seguenti operazioni non sicure a livello di transazione non possono essere utilizzate con un server MySQL abilitato per GTID:

  • CREATE TABLE ... SELECT istruzione;
  • CREATE TEMPORARY TABLE estratti conto delle transazioni;
  • Transazioni o estratti conto che interessano sia le tabelle transazionali sia quelle non transazionali.

Se utilizzi una transazione non sicura a livello di transazione, viene visualizzato un messaggio di errore simile all'esempio seguente:

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

Utilizzare trigger e funzioni archiviate

Se l'istanza ha il logging binario abilitato e devi lavorare con gli attivatori o le funzioni archiviate, assicurati che l'istanza abbia il log_bin_trust_function_creatorsflag 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. Puoi controllare le informazioni di fatturazione per un progetto accedendo alla 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 eseguibile entro poche 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 Utilizzare le chiavi di crittografia gestite dal cliente (CMEK).

  • Problemi legali

    Ad esempio, una violazione delle Norme di utilizzo accettabile di Google Cloud può 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 in modo anomalo all'avvio o subito dopo l'avvio), Cloud SQL potrebbe sospenderla.

Mentre un'istanza è sospesa, puoi continuare a visualizzare le informazioni relative oppure 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 per informazioni sulle 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 60.000 IOPS e senza costi aggiuntivi per I/O. Tra le altre cose, le prestazioni di IOPS e velocità effettiva dipendono dalle dimensioni del disco, dal numero di vCPU dell'istanza e dalle dimensioni dei blocchi I/O.

Le prestazioni dell'istanza dipendono anche dalla scelta del tipo di archiviazione e del 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 aggiungendo i flag di database --log_output='FILE' e --slow_query_log=on all'istanza. Questo rende l'output del log disponibile utilizzando il Visualizzatore log nella console Google Cloud. Tieni presente che vengono applicati i costi di logging della suite operativa di Google Cloud.

Non impostare log_output su TABLE. In caso contrario, potrebbero verificarsi problemi di connessione come descritto in Suggerimenti per l'utilizzo dei flag.

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

Abilita il blocco dei blocchi

I monitor InnoDB forniscono informazioni sullo stato interno del motore di archiviazione InnoDB, che puoi utilizzare 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 spiegazioni sulle sezioni nell'output del monitor, consulta InnoDB Standard Monitor e Lock Monitor Output.

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

Usa schema di rendimento

Lo schema di rendimento MySQL è 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 dello SLA (accordo sul livello del servizio). Scopri di più

Suggerimenti generali sulle prestazioni

. Per inserimento di database lenti, aggiornamenti o eliminazioni, considera le seguenti azioni:
  • Controlla le posizioni dell'autore e del database; l'invio di dati a una lunga distanza introduce la latenza.

Per selezioni di database lente, considera quanto segue:

  • La memorizzazione nella cache è importante per le prestazioni di lettura. Confronta le dimensioni del tuo set di dati con le dimensioni della RAM dell'istanza. Idealmente, l'intero set di dati si adatta al 70% della RAM dell'istanza, nel qual caso le query non sono limitate alle prestazioni dell'IO. In caso contrario, valuta la possibilità di aumentare le dimensioni della RAM dell'istanza.
  • Se il carico di lavoro consiste in query ad alta intensità di CPU (ordinamento, espressioni regolari, altre funzioni complesse), la tua istanza potrebbe essere limitata e aumentare le vCPU.
  • Controlla la posizione del lettore e del database: la latenza influisce ancora di più sulle prestazioni di lettura rispetto a quelle sulla scrittura.
  • Esamina miglioramenti delle prestazioni non Cloud SQL, come l'aggiunta di un'indicizzazione adeguata, la riduzione dei dati scansionati ed evitare ulteriori round trip.
  • Se noti un rendimento scarso eseguendo 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 capire dove puoi:

    • Aggiungi 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.

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

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

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

      • Utilizza meno RAM per riga dichiarando le colonne solo quanto necessario.

    Risolvere i problemi

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

    Messaggi di errore

    Per messaggi di errore specifici dell'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 Cloud SQL, come la creazione, la clonazione o l'aggiornamento, potrebbero non riuscire a causa di errori di Cloud KMS e di autorizzazioni o ruoli mancanti. Le cause comuni di errori includono una versione della chiave Cloud KMS mancante, una versione della chiave di Cloud KMS disabilitata o eliminata, autorizzazioni IAM insufficienti per accedere alla versione della chiave di Cloud KMS o la versione della chiave di Cloud KMS si trova in una regione diversa rispetto all'istanza di 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...
    Account di servizio per prodotto non trovato per progetto 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 ACCOUNT SERVIZIO.

    Impossibile concedere l'accesso all'account di servizio L'account utente non è autorizzato a concedere l'accesso a questa versione della chiave. Aggiungi il ruolo Amministratore dell'organizzazione sul tuo account utente o di servizio.

    VAI ALLA PAGINA ACCOUNT ACCOUNT

    La versione della chiave Cloud KMS è stata 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 CHIAVI IN CRYPTO

    Autorizzazione insufficiente per utilizzare la chiave Cloud KMS Ruolo cloudkms.cryptoKeyEncrypterDecrypter mancante nell'account utente o di servizio utilizzato 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 ACCOUNT


    Se il ruolo è già sul tuo account, consulta Creazione di una chiave per scoprire come creare una nuova versione della chiave. Nota.
    Chiave Cloud KMS non trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Vedi Creazione di una chiave. 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 o più regioni globali. Crea una versione della chiave nella stessa regione in cui vuoi creare istanze. Vedi Creazione di una chiave. Nota.

    Tabella per la risoluzione dei problemi relativi alla nuova crittografia

    Per questo errore... Il problema potrebbe essere... Prova...
    Nuova crittografia della risorsa CMEK non riuscita perché la chiave Cloud KMS è inaccessibile. Assicurati che la versione della chiave primaria sia abilitata e che l'autorizzazione sia concessa correttamente. La versione della chiave non è abilitata o non dispone delle autorizzazioni appropriate.

    Riattiva la versione della chiave Cloud KMS:

    VAI ALLA PAGINA CHIAVI IN CRYPTO

    Verifica che disponga delle autorizzazioni appropriate:

    VAI ALLA PAGINA ACCOUNT ACCOUNT

    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 criptare nuovamente. Per saperne di più, consulta Ricriptare un'istanza o una replica abilitata con CMEK esistente