Best practice

Questa pagina fornisce le best practice per ottenere il massimo livello di prestazioni, durabilità e affidabilità 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 Ulteriori informazioni
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 per controllare quando possono verificarsi aggiornamenti che causano interruzioni. Consulta Periodo di manutenzione.
Se elimini e ricrei regolarmente le istanze, utilizza un timestamp nell'ID istanza per aumentare la probabilità che i nuovi ID istanza siano utilizzabili.
Non avviare un'operazione amministrativa prima che l'operazione precedente sia stata completata.

Le istanze Cloud SQL non accetteranno nuove richieste di operazioni finché non avranno completato l'operazione precedente; le operazioni amministrative (come riavvii, aggiornamenti, importazioni, esportazioni, backup e cloni) non possono essere eseguite contemporaneamente sulla stessa istanza. Se tenti di avviare una nuova operazione prematuramente, la richiesta dell'operazione non va a buon fine.

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

Configura lo spazio di archiviazione per consentire la manutenzione critica del database.

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

Per ricevere un avviso quando lo spazio su disco disponibile scende al di sotto del 20%, crea una criterio di avviso basata sulle metriche per la metrica Utilizzo del disco con una posizione Sopra la soglia e un valore pari a 0,8. Per saperne di più, consulta Crea policy di avviso basate su metriche.

Evitare 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 saperne di più, consulta Metriche. Puoi anche monitorare l'utilizzo della CPU e ricevere avvisi in corrispondenza di una soglia specificata utilizzando Crea policy di avviso basate su soglie metriche.

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

Evita l'esaurimento della memoria.

Quando cerchi segni di esaurimento della memoria, devi utilizzare principalmente la metrica Utilizzo.

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 l'allocazione della memoria da parte della 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 riutilizzare la memoria in questa cache.

Per prevedere i problemi di memoria esaurita, controlla entrambe le metriche e interpretale insieme. Se le metriche appaiono elevate, l'istanza potrebbe avere poca memoria. Ciò può essere dovuto a una configurazione personalizzata, a un'istanza di dimensioni insufficienti per il workload o a una combinazione di questi fattori.

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

Sicurezza

Best practice Ulteriori informazioni
Preferisci IP privato A meno che non sia richiesto l'accesso con IP pubblico, preferisci l'utilizzo di un IP privato. In questo modo, le connessioni di rete non autorizzate al tuo database verranno ridotte al minimo.
Evita 0.0.0.0/0 nelle reti autorizzate Evita di includere 0.0.0.0/0 nelle reti autorizzate, poiché ciò consente l'accesso da internet globale senza limitazioni.
Evita reti autorizzate troppo grandi Evita di utilizzare prefissi CIDR di piccole dimensioni in Reti autorizzate, in quanto ciò consente l'accesso da un numero potenzialmente eccessivo di host. Ti consigliamo un prefisso CIDR non inferiore a /16 e preferibilmente superiore a /19.
Abilita le policy per le password Utilizzando le policy relative alle password delle istanze MySQL o PostgreSQL, specifica le policy relative alle password appropriate per l'istanza del database per evitare la configurazione di password inefficaci, impostare la data di scadenza e configurare il blocco dell'account in caso di tentativi di accesso non riusciti. Questo è particolarmente importante se stai configurando l'istanza per l'IP pubblico.
Segui i pattern di utilizzo degli schemi sicuri Per evitare attacchi di hijacking del percorso di ricerca, assicurati che gli utenti amministrativi dispongano di un percorso di ricerca sicuro. Ti consigliamo di impostare il parametro search_path su pg_catalog per gli utenti con privilegi elevati. Consulta Utilizzo del percorso di ricerca sicuro.
Imposta log_statement su none Il flag log_statement è none per impostazione predefinita. Se non è impostato su none, PostgreSQL può registrare istruzioni di log che contengono password. Ti consigliamo di utilizzare pgAudit per il controllo del database anziché log_statement.

Architettura dei dati

Best practice Ulteriori informazioni
Se possibile, suddividi le istanze di grandi dimensioni in istanze più piccole. Quando possibile, è meglio utilizzare molte istanze Cloud SQL più piccole anziché un'unica istanza di grandi dimensioni. La gestione di un'istanza monolitica di grandi dimensioni presenta sfide che non si presentano con un gruppo di istanze più piccole.

Implementazione delle applicazioni

Best practice Ulteriori informazioni
Utilizza buone pratiche di gestione delle connessioni, come il pooling delle connessioni e il backoff esponenziale. L'utilizzo di queste tecniche migliora l'utilizzo delle risorse da parte dell'applicazione e ti aiuta a rispettare i limiti di connessione di Cloud SQL. Per saperne di più ed esempi di codice, consulta Gestisci le connessioni ai database.
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione, che possono verificarsi in qualsiasi momento durante il periodo di manutenzione. Prova la manutenzione self-service per simulare un aggiornamento di manutenzione. Durante la manutenzione, l'istanza non è disponibile per un breve periodo e le connessioni esistenti vengono interrotte. Testare i rollout di manutenzione ti consente di comprendere meglio come la tua applicazione gestisce la manutenzione pianificata e quanto velocemente il sistema può riprendersi.
Testa la risposta dell'applicazione ai failover, che possono verificarsi in qualsiasi momento. Puoi avviare manualmente un failover utilizzando la console Google Cloud , gcloud CLI o l'API. Consulta Avvio del failover.
Evita transazioni di grandi dimensioni. Mantieni le transazioni piccole e brevi. Se è necessario un aggiornamento di un database di grandi dimensioni, eseguilo in più transazioni più piccole anziché in un'unica transazione di grandi dimensioni.
Se utilizzi il proxy di autenticazione Cloud SQL, assicurati di utilizzare la versione più aggiornata. Consulta Mantieni aggiornato il Cloud SQL Auth Proxy.

Importazione ed esportazione di dati

Best practice Ulteriori informazioni
Velocizza le importazioni per istanze di piccole dimensioni. Per le istanze di piccole dimensioni, puoi aumentare temporaneamente la CPU e la RAM di un'istanza per migliorare le prestazioni durante l'importazione di set di dati di grandi dimensioni.
Se esporti dati per l'importazione in Cloud SQL, assicurati di utilizzare la procedura corretta. Consulta Esportazione dei dati da un server di database gestito esternamente.

Backup e ripristino

Best practice Ulteriori informazioni
Proteggi i tuoi dati con la funzionalità Cloud SQL appropriata.

I backup e le esportazioni sono modi per fornire ridondanza e protezione dei dati. Ognuna di queste funzionalità protegge da scenari diversi e si integra con le altre in una solida strategia di protezione dei dati.

I backup sono leggeri e consentono di ripristinare i dati dell'istanza allo stato in cui erano al momento del backup. Tuttavia, i backup presentano 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. Se la regione in cui si trova l'istanza non è disponibile, non puoi ripristinare l'istanza da quel backup, nemmeno in una regione disponibile.

La creazione delle esportazioni richiede più tempo, perché in Cloud Storage viene creato un file esterno che può essere utilizzato per ricreare i dati. Le esportazioni non sono interessate dall'eliminazione dell'istanza. Inoltre, puoi esportare un singolo database o anche una singola tabella, a seconda del formato di esportazione scelto.

Proteggi l'istanza e i backup dall'eliminazione accidentale.

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

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

Passaggi successivi

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