Diagnostica dei problemi

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina contiene un elenco dei problemi che potresti riscontrare più di frequente quando utilizzi le istanze Cloud SQL e i passaggi da 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 la tua 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

Consulta la pagina Problemi di connessione di debug o la sezione Connettività nella pagina di risoluzione dei problemi per la risoluzione dei problemi di connessione.

Problemi relativi alle istanze

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.

Importa ed esporta

Le importazioni ed esportazioni in Cloud SQL sono le stesse dell'utilizzo dell'utilità mysqldump, con l'eccezione che con la funzionalità di importazione/esportazione Cloud SQL puoi trasferire i dati utilizzando un bucket Cloud Storage.

Il completamento delle operazioni di importazione in Cloud SQL ed esportazione da Cloud SQL può richiedere molto tempo, a seconda delle dimensioni dei dati elaborati. Questo può avere i seguenti effetti:

  • Non puoi arrestare un'operazione di istanza di 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, ad esempio i backup automatici giornalieri. Le esportazioni serverless consentono di eseguire altre operazioni, tra cui modifica delle istanze, importazione, failover e 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 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 aspetti da tenere in considerazione durante l'importazione:

  • Se l'importazione si arresta in modo anomalo, il problema potrebbe essere dovuto a un errore della memoria insufficiente. 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 di importazione ed esportazione, vedi 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 riescono. Se elimini dati, ad esempio mediante l'eliminazione di una tabella, lo spazio liberato non si rifletterà nella classe Spazio di archiviazione utilizzato segnalato dell'istanza. Per informazioni su questo comportamento, consulta la sezione delle domande frequenti Come faccio a recuperare lo spazio da una tabella eliminata?.

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

Evitare il danneggiamento dei dati

Evitare le colonne generate

A causa di un problema in MySQL, l'utilizzo delle colonne generate potrebbe causare il danneggiamento dei dati. Per ulteriori informazioni, consulta la pagina Bug MySQL n. 82736.

Pulizia di arresti

Quando Cloud SQL arresta un'istanza (ad esempio per manutenzione), non vengono inviate nuove connessioni all'istanza e le connessioni esistenti vengono terminate. La quantità di tempo in cui mysqld deve arrestarsi è limitato a 1 minuto. Se l'arresto non viene completato in quel lasso di tempo, il processo mysqld viene arrestato forzatamente. Ciò può causare l'interruzione della scrittura su disco a metà strada.

Motori di 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 i messaggi di errore come il seguente esempio:

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

Per evitare questo errore, rimuovi l'opzione ENGINE = MyISAM dal comando CREATE TABLE. In questo modo verrà 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 all'arresto sporco; esegui il comando FLUSH CHANGES dopo aver apportato modifiche alle tabelle. Se si verifica il danneggiamento del MyISAM, CHECK TABLE e REPAIR TABLE possono riportarti allo stato Buono (ma non salvare i dati).

GTID (Global Transaction Identifier)

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ù robusta. Tuttavia, GTID presenta alcune limitazioni imposte da MySQL, come documentato nel manuale di MySQL. Le seguenti operazioni non sicure per le transazioni non possono essere utilizzate con un server MySQL abilitato per GTID:

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

Se utilizzi una transazione non sicura dal punto di vista transazionale, viene visualizzato un messaggio di errore simile al seguente:

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

Utilizzare trigger e funzioni memorizzate

Se l'istanza ha il logging binario abilitato e devi lavorare con gli attivatori o le funzioni archiviate, assicurati che il flag log_bin_trust_function_creators sia impostato su on.

Stato sospeso

Esistono diversi motivi per cui Cloud SQL può 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. Per controllare le informazioni di fatturazione per un progetto, vai alla pagina Fatturazione di Google Cloud Console, seleziona il progetto e visualizza le informazioni dell'account di fatturazione utilizzate per il progetto. Una volta risolto il problema di fatturazione, l'istanza torna allo stato eseguibile entro qualche ora.

  • Problemi relativi alla chiave 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 di 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 pagina "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 durante l'avvio o subito dopo l'avvio), Cloud SQL potrebbe sospenderla.

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

Gli utenti 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. Le prestazioni di IOPS e velocità effettiva dipendono dalle dimensioni del disco, dal numero di vCPU dell'istanza e dalle dimensioni del blocco I/O, tra gli altri fattori.

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 che registri le query lente 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 si applicano i costi di logging della suite operativa di Google Cloud.

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

Puoi fare riferimento a 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 monitoraggio della serratura

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 monitoraggio on demand:

SHOW ENGINE INNODB STATUS\G

Per spiegazioni sulle sezioni nell'output del monitor, consulta Monitoraggio standard di InnoDB e output del monitor di blocco.

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

Usa schema di rendimento

Lo schema di rendimento di MySQL è una funzionalità per il monitoraggio dell'esecuzione di MySQL Server a basso livello. Il modo più accessibile per sfruttare le statistiche generate in performance_schema è la funzionalità dei report sul rendimento di MySQL MySQL.

Conserva un numero ragionevole di tabelle di database

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

Suggerimenti generali sul rendimento

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

Per le selezioni di database lenti, considera 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 si adatta al 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 uso intensivo della CPU (ordinamento, espressioni regolari, altre funzioni complesse), l'istanza potrebbe essere limitata, aumentando le vCPU.
  • Controlla la posizione del lettore e del database: la latenza influisce sulle prestazioni di lettura più che sulle prestazioni di scrittura.
  • Analizzare miglioramenti delle prestazioni non Cloud SQL specifici, come l'aggiunta di un'indicizzazione appropriata, la riduzione dei dati scansionati ed evitare ulteriori round trip.
  • Se noti un rendimento scarso 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 l'app EXPLAIN per sapere dove puoi:

    • Aggiungi indici alle tabelle per migliorare le prestazioni delle query. Ad esempio, assicurati che ogni campo che utilizzi come chiave unione 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, che di solito presenta prestazioni scarse. In questo caso, esegui uno dei seguenti passaggi:

      • Se possibile, utilizza gli indici invece di ordinare i dati. Per ulteriori informazioni, consulta la pagina ORDINA PER Ottimizzazione.

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

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

    Risoluzione dei problemi

    Per altri problemi relativi a 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.

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

    Le operazioni dell'amministratore di Cloud SQL, come creazione, clonazione o aggiornamento, potrebbero non riuscire a causa di errori di Cloud KMS e di autorizzazioni o ruoli 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 rispetto all'istanza Cloud SQL. Utilizza la seguente tabella per la 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 DI 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 organizzazione nel 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 potrai 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 CHIAVE CRYPTO

    Autorizzazione insufficiente per l'utilizzo della chiave Cloud KMS Il ruolo cloudkms.cryptoKeyEncrypterDecrypter non è presente nell'account utente o di servizio utilizzato per eseguire le operazioni sulle istanze Cloud SQL oppure la versione della chiave Cloud KMS non esiste. Aggiungi il ruolo cloudkms.cryptoKeyEncrypterDecrypter sul 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 informazioni su come creare una nuova versione della chiave. Vedi la nota.
    Chiave Cloud KMS non trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Consulta Creazione di una chiave. Vedi la nota.
    L'istanza Cloud SQL e la versione della chiave Cloud KMS si trovano in aree geografiche diverse La versione della chiave Cloud KMS e l'istanza Cloud SQL devono essere 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 le istanze. Consulta la pagina relativa alla creazione di una chiave. Vedi la nota.