Questa pagina contiene un elenco dei problemi più frequenti che potresti riscontrare quando lavori con le 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 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 la tua istanza smette di rispondere alle connessioni o le prestazioni sono ridotte, assicurati che sia conforme alle linee guida operative. Se non rispetta queste linee guida, non è coperto dallo SLA di Cloud SQL.
Problemi di connessione
Per assistenza in caso di problemi di connessione, consulta la pagina Debug dei problemi di connessione o la sezione Connettività nella pagina di risoluzione dei problemi.
Problemi dell'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.
Le importazioni in Cloud SQL e le esportazioni da Cloud SQL possono richiedere molto tempo, a seconda delle dimensioni dei dati in fase di elaborazione. Questa operazione può avere i seguenti impatti:
- Non puoi arrestare un'operazione 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 durante l'esecuzione di un'esportazione.
Altri aspetti da tenere presente durante l'importazione:
- Se l'importazione si arresta in modo anomalo, potrebbe essere dovuto a 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à 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 la tua istanza raggiunge la quantità massima di spazio di archiviazione consentita, le operazioni di scrittura nel database non vanno a buon fine. Se elimini i dati, ad esempio eliminando una tabella, lo spazio liberato non viene visualizzato nella Memoria utilizzata dell'istanza. Consulta le domande frequenti Come faccio a recuperare lo spazio di una tabella eliminata? per una spiegazione di questo comportamento.Il raggiungimento del limite massimo di spazio di archiviazione può anche causare il blocco dell'istanza durante il riavvio.
Evitare il danneggiamento dei dati
Evitare le colonne generate
A causa di un problema in MySQL, l'utilizzo di colonne generate potrebbe comportare il danneggiamento dei dati. Per ulteriori informazioni, consulta il bug #82736 di MySQL.
Arresti controllati
Quando Cloud SQL arresta un'istanza (ad es.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 interrotto forzatamente. Ciò può comportare l'interruzione delle scritture sul disco a metà.
Motori del 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'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 agli arresti anomali; 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 ripristinare lo stato precedente
(ma non salvare i dati).
Identificatori transazione globali (GTID)
Tutte le istanze MySQL hanno GTID abilitato automaticamente. 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 di MySQL. Le seguenti operazioni non sicure a livello transazionale non possono essere utilizzate con un server MySQL abilitato per GTID:
CREATE TABLE ... SELECT
estratti conto;CREATE TEMPORARY TABLE
istruzioni all'interno delle transazioni;- Transazioni o estratti conto che interessano sia le tabelle transazionali che quelle non transazionali.
Se utilizzi una transazione non sicura a livello transazionale, 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 la tua istanza ha il logging binario abilitato e devi utilizzare trigger o funzioni archiviate, assicurati che l'istanza abbia il flag log_bin_trust_function_creators
impostato su on
.
Stato sospeso
Esistono vari 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 andando alla pagina di fatturazione della console Trusted Cloud , selezionando il progetto e visualizzando le informazioni dell'account di fatturazione utilizzato per il progetto. Dopo aver risolto il problema di fatturazione, l'istanza torna allo stato eseguibile entro qualche ora.
Problemi principali relativi a Cloud Key Management Service
Ad esempio, se la versione della chiave di 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 Trusted Cloud Norme di utilizzo accettabile può causare la sospensione dell'istanza. Per ulteriori informazioni, consulta la sezione "Sospensioni e rimozioni" dei Trusted Cloud Termini di servizio.
Problemi operativi
Ad esempio, se un'istanza è bloccata in un ciclo di arresto anomalo (si arresta durante l'avvio o subito dopo l'avvio), Cloud SQL potrebbe sospenderla.
Mentre un'istanza è sospesa, puoi continuare a visualizzare le informazioni relative all'istanza oppure puoi eliminarla, se i problemi di fatturazione hanno attivato la sospensione.
Gli utenti 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 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 scelta del tipo di archiviazione e dal carico di lavoro.
Scopri di più su:
- Dischi permanenti e prestazioni.
- Metriche sul rendimento e sulla limitazione.
- Ottimizzazione delle prestazioni del disco.
- Altri fattori che influiscono sul rendimento.
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
alla tua istanza.
In questo modo, l'output del log è disponibile utilizzando il
visualizzatore log nella console Trusted Cloud .
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 contrassegni.
Per istruzioni su come registrare e monitorare le query lente di Cloud SQL per MySQL utilizzando Cloud Logging e Monitoring, puoi fare riferimento a questo tutorial.
Abilitare 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 monitor on demand:
SHOW ENGINE INNODB STATUS\G
Per spiegazioni delle sezioni nell'output del monitor, vedi Output di InnoDB Standard Monitor e Lock Monitor.
Puoi attivare i monitor InnoDB in modo che l'output venga generato periodicamente in un file o una tabella, con un peggioramento delle prestazioni. Per ulteriori informazioni, consulta Attivazione dei monitor InnoDB.
Utilizzare lo schema delle prestazioni
Lo schema delle prestazioni di MySQL è una funzionalità per monitorare l'esecuzione del server MySQL a un 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 del 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 lenti del database, valuta le seguenti azioni:- Controlla le posizioni del writer e del database; l'invio di dati su lunghe distanze introduce latenza.
Per le selezioni lente del database, 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 della tua 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 la RAM dell'istanza.
- Se il tuo 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; aumenta le vCPU.
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;
.
Utilizza EXPLAIN
per identificare 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
. SeEXPLAIN
mostra "Using temporary; Using filesort" nella colonna Extra dell'output, i risultati intermedi vengono archiviati in un file che viene poi ordinato, il che di solito comporta prestazioni scarse. In questo caso, esegui uno dei seguenti passaggi:Se possibile, utilizza gli indici anziché l'ordinamento. Per ulteriori informazioni, consulta Ottimizzazione di ORDER BY.
Aumenta le dimensioni della variabile
sort_buffer_size
per la sessione di query.Utilizza meno RAM per riga dichiarando le colonne solo nelle dimensioni necessarie.
Risoluzione dei problemi
Per altri problemi di Cloud SQL, consulta la pagina 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 amministratore 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 disattivata 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 per la risoluzione dei problemi 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 questa procedura: |
---|---|---|
Account di servizio per prodotto e per progetto non trovato | Il nome del account di servizio non è corretto. | Assicurati di aver creato un account di servizio per il progetto utente corretto.
|
Impossibile concedere l'accesso al 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 utente o account di servizio.
|
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.
|
Autorizzazione insufficiente per utilizzare la chiave Cloud KMS | Il ruolo cloudkms.cryptoKeyEncrypterDecrypter non è presente nell'utente o
nelaccount di serviziot che utilizzi per eseguire operazioni sulle istanze Cloud SQL oppure la
versione della chiave Cloud KMS non esiste. |
Nel progetto Trusted Cloud che ospita la chiave, aggiungi il ruolo
cloudkms.cryptoKeyEncrypterDecrypter al tuo utente o account di servizio.
VAI ALLA PAGINA DEGLI ACCOUNT IAM Se il ruolo è già concesso al tuo account, consulta Creazione di 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. 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 multiregionale. | Crea una versione della chiave nella stessa regione in cui vuoi creare le istanze. Vedi Creazione di una chiave. Vedi nota. |
La versione della chiave Cloud KMS viene ripristinata, ma l'istanza è ancora sospesa | La versione della chiave è disattivata o non concede le autorizzazioni corrette. | Riabilita la versione della chiave e concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter
al tuo utente o account di servizio nel progetto Trusted Cloud che ospita la chiave. |
Tabella per la risoluzione dei problemi relativi alla ricrittografia
Per questo errore… | Il problema potrebbe essere... | Prova questa procedura: |
---|---|---|
La ricriptografia 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 concessa correttamente. | La versione della chiave è disattivata o non concede le autorizzazioni corrette. | Riattiva la versione della chiave Cloud KMS: VAI ALLA PAGINA CHIAVI CRITTOGRAFICHE Nel progetto Trusted Cloud che ospita la chiave, conferma che il ruolo
|
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 Rieseguire la crittografia di un'istanza o una replica esistente abilitata per CMEK. |