Best practice generali

Questa pagina fornisce le best practice per ottenere le migliori prestazioni, durabilità e disponibilità da Cloud SQL.

Se si verificano problemi con l'istanza Cloud SQL, esamina quanto segue durante la risoluzione dei problemi:

Configurazione e amministrazione delle istanze

Best practice Informazioni dettagliate
Leggi e segui le linee guida operative per assicurarti che le tue istanze siano coperte dallo SLA di Cloud SQL.
Configura un periodo di manutenzione per l'istanza principale in modo da controllare quando possono verificarsi aggiornamenti fastidiosi. Consulta Periodo di manutenzione.
Per carichi di lavoro ad alta intensità di lettura, aggiungi repliche di lettura per trasferire il traffico dall'istanza principale. Facoltativamente, puoi utilizzare un bilanciatore del carico come HAProxy per gestire il traffico verso le repliche.
Se elimini e ricrei regolarmente le istanze, utilizza un timestamp nell'ID istanza per aumentare la probabilità che siano utilizzabili nuovi ID istanza.
Non avviare un'operazione amministrativa prima del completamento dell'operazione precedente.

Le istanze Cloud SQL non accettano nuove richieste di operazioni finché non hanno completato l'operazione precedente. Se tenti di avviare una nuova operazione prematuramente, la richiesta dell'operazione non andrà a buon fine. Sono inclusi i riavvii delle istanze.

Lo stato dell'istanza nella console Google Cloud non indica se un'operazione è in esecuzione. Il segno di spunta verde indica solo che l'istanza è in stato RUNNABLE. Per vedere se un'operazione è in esecuzione, vai alla scheda Operazioni e controlla lo stato dell'operazione più recente.

Configura lo spazio di archiviazione per supportare la manutenzione critica dei database.

Se l'impostazione per le istanze Abilita aumenti automatici dello spazio di archiviazione è disabilitata o è abilitato il limite di aumento automatico dello spazio di archiviazione, assicurati di avere almeno il 20% di spazio disponibile per supportare eventuali operazioni critiche di manutenzione del database che Cloud SQL potrebbe eseguire.

Per ricevere avvisi quando lo spazio su disco disponibile scende al di sotto del 20%, crea un criterio di avviso basato su metriche per la metrica di utilizzo del disco con una posizione sopra la soglia e un valore pari a 0,8. Per maggiori informazioni, consulta Creare criteri di avviso basati su metriche.

Evita un utilizzo eccessivo della CPU.

Puoi visualizzare la percentuale di CPU disponibile utilizzata dall'istanza nella pagina dei dettagli dell'istanza nella console Google Cloud. Per maggiori informazioni, consulta Metriche. Puoi inoltre monitorare l'utilizzo della CPU e ricevere avvisi quando una determinata soglia viene impostata mediante Crea criteri di avviso per soglia di metriche.

Per evitare un utilizzo eccessivo, puoi aumentare il numero di CPU per l'istanza. La modifica delle CPU richiede il riavvio dell'istanza. Se l'istanza ha già raggiunto il numero massimo di CPU, devi partizionare il database in più istanze.

Evita l'esaurimento della memoria.

Quando cerchi segni di esaurimento della memoria, dovresti utilizzare principalmente la metrica utilizzo. Per evitare errori di esaurimento della memoria, è consigliabile che questa metrica rimanga al di sotto del 90%.

Puoi anche utilizzare la metrica total_usage per osservare la percentuale di memoria disponibile utilizzata dall'istanza Cloud SQL, inclusa la memoria utilizzata dal container del database e la memoria allocata dalla cache del sistema operativo.

Osservando la differenza tra le due metriche, puoi identificare la quantità di memoria utilizzata dai processi rispetto a quella utilizzata dalla cache del sistema operativo. Puoi riallocare la memoria in questa cache.

Per prevedere i problemi di esaurimento della memoria, controlla entrambe le metriche e interpretale insieme. Se le metriche sembrano elevate, l'istanza potrebbe avere poca memoria. Ciò può essere dovuto a una configurazione personalizzata, alle dimensioni ridotte dell'istanza per il carico di lavoro o a una combinazione di questi fattori.

Scala l'istanza Cloud SQL per aumentare le dimensioni della sua memoria. La modifica delle dimensioni della memoria dell'istanza richiede il riavvio dell'istanza. Se l'istanza ha già raggiunto la dimensione massima della memoria, devi partizionare il database su più istanze. Per scoprire di più sul monitoraggio di entrambe le metriche nella console Google Cloud, consulta Metriche.

Architettura dei dati

Best practice Informazioni dettagliate
Se possibile, suddividi le istanze di grandi dimensioni in istanze più piccole. Quando possibile, utilizzare molte istanze Cloud SQL più piccole è preferibile rispetto a un'unica di grandi dimensioni. La gestione di un'istanza monolitica di grandi dimensioni presenta sfide non poste da un gruppo di istanze più piccole.
Non utilizzare troppi database o tabelle di database.

Mantieni il conteggio dei database a meno di 500. Mantieni il numero delle tabelle della tua istanza a un numero inferiore a 50.000 o a 500.000 se soddisfi il requisito hardware minimo di 32 core e oltre 200 GB di memoria. Mantieni il numero delle tabelle per ogni database a meno di 50.000 tabelle. Troppi database o tabelle di database possono influire sui tempi di upgrade del database.

Assicurati che le tabelle abbiano una chiave primaria o univoca. Cloud SQL utilizza la replica basata su righe, che funziona al meglio nelle tabelle con chiavi primarie o univoche.

Implementazione dell'applicazione

Best practice Informazioni dettagliate
Utilizza buone pratiche di gestione delle connessioni, come il pooling delle connessioni e il backoff esponenziale. L'utilizzo di queste tecniche migliora l'uso delle risorse da parte della tua applicazione e ti aiuta a rimanere entro i limiti di connessione di Cloud SQL. Per maggiori informazioni ed esempi di codice, consulta Gestione delle connessioni ai database.
Verifica la risposta della tua applicazione agli aggiornamenti di manutenzione, che possono essere eseguiti in qualsiasi momento durante il periodo di manutenzione. Prova la manutenzione self-service per simulare un aggiornamento di manutenzione. Durante la manutenzione, l'istanza diventa non disponibile per un breve periodo e le connessioni esistenti vengono interrotte. Testare le implementazioni di manutenzione ti consente di capire meglio come la tua applicazione gestisce la manutenzione pianificata e la velocità di ripristino del sistema.
Testa la risposta della tua applicazione ai failover, che possono verificarsi in qualsiasi momento. Puoi avviare manualmente un failover utilizzando la console Google Cloud, gcloud CLI o l'API. Vedi Avvio del failover.
Evita transazioni di grandi dimensioni. Fai in modo che le transazioni siano brevi e di dimensioni ridotte. Se è necessario un aggiornamento del database di grandi dimensioni, eseguilo in diverse transazioni di dimensioni inferiori anziché in una singola transazione di grandi dimensioni.
Se utilizzi il proxy di autenticazione Cloud SQL, assicurati di utilizzare la versione più aggiornata. Consulta Mantenere aggiornato il proxy di autenticazione Cloud SQL.

Importazione ed esportazione di dati

Best practice Informazioni dettagliate
Utilizza esportazioni serverless. Le esportazioni serverless riducono il carico dell'operazione di esportazione in un'istanza temporanea, in modo che l'istanza principale continui a gestire le query ed esegua le operazioni secondo le prestazioni abituali. Al termine dell'esportazione dei dati, l'istanza temporanea viene eliminata automaticamente.
Accelera l'importazione per istanze di piccole dimensioni. Per le istanze di piccole dimensioni, puoi temporaneamente aumentare la CPU e la RAM di un'istanza per migliorare le prestazioni durante l'importazione di set di dati di grandi dimensioni.
Se esporti i dati per importarli in Cloud SQL, assicurati di utilizzare la procedura corretta. Vedi Esportare i dati da un server di database gestito esternamente.
Quando esegui la migrazione dei dati con un'esportazione e un'importazione, utilizza la stessa modalità SQL per l'importazione e l'esportazione. Consulta l'articolo Utilizzare la stessa modalità SQL per l'importazione e l'esportazione.

Backup e ripristino

Best practice Informazioni dettagliate
Proteggi i tuoi dati con le funzionalità Cloud SQL appropriate.

I backup, il recupero point-in-time e le esportazioni sono metodi per garantire ridondanza e protezione dei dati. Ognuno di questi strumenti protegge da scenari diversi e si completa a vicenda in una solida strategia di protezione dei dati.

I backup sono leggeri e consentono di ripristinare i dati dell'istanza allo stato in cui è stato eseguito il backup. Tuttavia, i backup hanno alcune limitazioni. Se elimini l'istanza, vengono eliminati anche i backup. Non puoi eseguire il backup di un singolo database o di una singola tabella. E se la regione in cui si trova l'istanza non è disponibile, non puoi ripristinare l'istanza da quel backup, anche in una regione disponibile.

Il recupero point-in-time consente di recuperare un'istanza in un momento specifico. Ad esempio, se un errore causa una perdita di dati, puoi ripristinare un database allo stato precedente all'errore. Un recupero point-in-time crea sempre una nuova istanza; non è possibile eseguire un recupero point-in-time su un'istanza esistente.

La creazione delle esportazioni richiede più tempo perché in Cloud Storage viene creato un file esterno che può essere utilizzato per ricreare i dati. Se elimini l'istanza, le esportazioni non saranno interessate. Inoltre, puoi esportare un solo database o persino una tabella, a seconda del formato di esportazione che scegli.

Dimensiona le istanze in base alla conservazione dei log delle transazioni (binario). Un'attività di scrittura elevata nel database può generare un grande volume di log di transazioni (binari), che possono consumare spazio su disco significativo, e portare a una crescita del disco per le istanze abilitate per aumentare automaticamente lo spazio di archiviazione. Ti consigliamo di dimensionare lo spazio di archiviazione dell'istanza in base alla conservazione dei log delle transazioni.
Proteggi l'istanza e i backup dall'eliminazione accidentale.

Un'istanza Cloud SQL creata nella console Google Cloud o tramite Terraform abilita la prevenzione dell'eliminazione accidentale per impostazione predefinita.

Utilizza la funzionalità di esportazione in Cloud SQL per esportare i dati per una maggiore protezione. Utilizza Cloud Scheduler con l'API REST per automatizzare la gestione delle esportazioni. Per scenari più avanzati, Cloud Scheduler con Cloud Functions per l'automazione.

Passaggi successivi

Per ulteriori informazioni sulle procedure generali per motore del database, consulta: