Questa pagina introduce le best practice generali per aiutarti a migliorare le prestazioni, la durabilità e la disponibilità di AlloyDB per PostgreSQL. Questa pagina è destinata agli amministratori di database e agli sviluppatori che hanno già familiarità con AlloyDB e PostgreSQL.
Configurazione e amministrazione delle istanze
Utilizza gli strumenti AlloyDB per monitorare l'utilizzo e lo stato del database.
Segui le linee guida operative.
Configura un periodo di manutenzione per l'istanza principale.
Aggiungi istanze del pool di lettura per scaricare il traffico di lettura.
Gestisci il ritardo di replica.
Non avviare un'operazione amministrativa prima del completamento di quella precedente.
Configura una quota di spazio di archiviazione sufficiente per la manutenzione critica del database.
Evita l'utilizzo eccessivo della CPU.
Evita l'esaurimento della memoria.
Assicurati che la tua istanza abbia ID transazione ottimali.
Utilizza gli strumenti AlloyDB per monitorare l'utilizzo e lo stato del database
Utilizza la seguente tabella per scoprire gli strumenti di AlloyDB che ti aiutano a monitorare l'utilizzo, lo stato e le prestazioni del tuo database.
Strumento AlloyDB | Descrizione |
---|---|
Report snapshot delle prestazioni | Confronta gli snapshot delle metriche di sistema tra due momenti diversi nel tempo. |
Query Insights | Ti aiuta a rilevare, diagnosticare e prevenire i problemi di prestazioni delle query per i database AlloyDB. Fornisce informazioni diagnostiche e un monitoraggio intuitivo in self-service che non si limitano al rilevamento per aiutarti a identificare la causa principale dei problemi di prestazioni. |
Approfondimenti di sistema | Consente di monitorare le risorse e le metriche del database, tra cui il conteggio dei nodi attivi, l'utilizzo della CPU, i picchi di connessioni, gli errori di log, le transazioni al secondo e il ritardo di replica massimo. |
Segui le linee guida operative
Per assicurarti che le tue istanze siano coperte dall'SLA di AlloyDB per PostgreSQL, segui le linee guida operative.
Configura un periodo di manutenzione per l'istanza principale
Configura un periodo di manutenzione per l'istanza principale per pianificare quando possono verificarsi aggiornamenti che causano interruzioni. Per ulteriori informazioni, vedi Visualizzare e impostare gli orari di manutenzione.
Aggiungi istanze del pool di lettura per scaricare il traffico di lettura
Per i workload di lettura impegnativi, aggiungi istanze del pool di lettura per trasferire il traffico di lettura dall'istanza principale.
Configura uno o più pool di lettura per ogni database nell'istanza per migliorare la memorizzazione nella cache.
Valuta la possibilità di aggiungere altri nodi per pool per facilitare il bilanciamento del carico automatico e l'alta disponibilità.
Gestire il ritardo della replica
AlloyDB ha apportato diversi miglioramenti per ridurre il ritardo di replica. Tuttavia, potresti riscontrare scenari in cui la riproduzione dei log è bloccata o non riesce a tenere il passo, il che può causare un aumento del ritardo di replica.
Ad esempio, se le dimensioni della VM principale sono molto maggiori di quelle dei nodi del pool di lettura, in caso di carichi di lavoro di scrittura elevati la VM principale potrebbe generare record di log più velocemente di quanto i nodi di lettura possano riprodurli, soprattutto se sui nodi di lettura è in esecuzione contemporaneamente anche un carico di lavoro di lettura elevato. In questo scenario, potrebbe essere utile aumentare le dimensioni del nodo di lettura per assegnargli più risorse.
A seconda delle esigenze dell'applicazione, potresti voler modificare i seguenti parametri:
max_standby_streaming_delay
: determina per quanto tempo la riproduzione attende prima di annullare le query che la bloccano.google_storage.log_replay_throttle_read_transactions
: determina se limitare le query quando il ritardo è elevato. La limitazione delle query offre più risorse per la riproduzione, in modo da recuperare più velocemente ed evitare di restituire dati obsoleti alle query.alloydb.promote_cancel_to_terminate
: Determina se terminare forzatamente i backend delle query che non rispondono all'annullamento.
Non avviare un'operazione amministrativa prima del completamento di quella precedente
Le istanze AlloyDB non possono accettare nuove richieste di operazioni finché l'operazione precedente non viene completata. Se tenti di avviare una nuova operazione prima del completamento di quella precedente, la richiesta di operazione non va a buon fine. Ciò include i riavvii delle istanze.
Lo stato dell'istanza nella console Google Cloud non riflette se un'operazione è in esecuzione. Il segno di spunta verde indica solo se l'istanza
si trova nello stato RUNNABLE
. Per verificare se un'operazione è in esecuzione, fai clic su
Operazioni nel riquadro di navigazione a sinistra e controlla lo stato dell'operazione più
recente.
Configura una quota di spazio di archiviazione sufficiente per la manutenzione critica del database
Per impostazione predefinita, puoi utilizzare uno spazio di archiviazione fino a 16 TB per cluster. Se hai bisogno di più spazio di archiviazione, valuta la possibilità di aumentare la quota di spazio di archiviazione.
Evitare l'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 Monitorare le istanze. Puoi anche monitorare l'utilizzo della CPU e ricevere avvisi a una soglia specificata utilizzando Crea criteri di avviso basati su soglie delle metriche.
Per evitare un utilizzo eccessivo, puoi scalare l'istanza a un numero maggiore di CPU. La modifica delle CPU richiede il riavvio dell'istanza. Se la tua istanza ha già raggiunto il numero massimo di CPU, ti consigliamo di partizionare il database in più istanze.
Evitare l'esaurimento della memoria
AlloyDB dispone di una gestione automatica della memoria per evitare problemi di memoria insufficiente. Tuttavia, una pressione costante sulla memoria potrebbe causare problemi di prestazioni. Quando cerchi segni di esaurimento della memoria, devi utilizzare principalmente la metrica utilizzo. Per un rendimento ottimale, ti consigliamo di mantenere questa metrica al di sotto del 90%.
Puoi anche utilizzare la metrica total_usage per osservare la percentuale di memoria disponibile utilizzata dall'istanza AlloyDB, inclusa la memoria utilizzata dal contenitore del database e la memoria allocata dalla cache del sistema operativo.
Osservando la differenza tra le metriche di utilizzo e utilizzo totale, puoi identificare la quantità di memoria utilizzata dai processi rispetto a quella utilizzata dalla cache del sistema operativo. Puoi riutilizzare il ricordo in questa cache.
Scala l'istanza AlloyDB per aumentare le dimensioni della memoria. La modifica della dimensione della memoria dell'istanza richiede il riavvio dell'istanza. Se la tua istanza ha già raggiunto la dimensione massima della memoria, devi partizionare il database su più istanze.
Per saperne di più sul monitoraggio delle metriche di utilizzo e utilizzo totale nella console Google Cloud , consulta Monitorare le istanze.
Assicurati che la tua istanza abbia ID transazione ottimali
Puoi visualizzare l'utilizzo dell'ID transazione della tua istanza nella pagina Metrics Explorer
della console Google Cloud
impostando Resource Type
su AlloyDB for PostgreSQL Database
e Metric
su Percentage of instance's transaction IDs consumed
. Per ulteriori
informazioni, consulta
Crea grafici con Esplora metriche.
AlloyDB dispone di autovacuum adattivo integrato che contribuisce a mitigare i problemi correlati al vacuum.
Architettura dei dati
Se possibile, dividi le istanze di grandi dimensioni in istanze più piccole.
Non utilizzare troppe tabelle di database.
Suddividi le istanze di grandi dimensioni in istanze più piccole, se possibile.
Se possibile, utilizza molti cluster AlloyDB più piccoli anziché un'unica istanza di grandi dimensioni. La gestione di un'istanza monolitica di grandi dimensioni presenta sfide che non vengono create da un gruppo di istanze più piccole.
Non utilizzare troppe tabelle di database
Mantieni il numero di tabelle dell'istanza inferiore a 10.000. Un numero eccessivo di tabelle del database può influire sul tempo di upgrade del database.
Prestazioni delle query
Abilita il motore colonnare se esegui query analitiche.
Aumenta le dimensioni dell'istanza per migliorare le prestazioni delle query.
Esegui il deployment dei pool di lettura e scarica le query di lettura nel pool di lettura.
Abilita il motore colonnare se esegui query analitiche
Leggi una panoramica del motore colonnare AlloyDB. Controlla i tipi di query che traggono vantaggio dall'attivazione del motore colonnare.
Puoi monitorare l'utilizzo del motore colonnare.
Se non hai mai utilizzato il motore colonnare, inizia a familiarizzare con la creazione automatica delle colonne. Dopodiché, puoi scegliere di gestire le colonne manualmente.
Aumenta le dimensioni dell'istanza per migliorare le prestazioni delle query
Se le prestazioni delle query sono scarse, valuta la possibilità di scalare l'istanza.
Ogni SKU ha configurazioni di vCPU e memoria limitate e anche una cache veloce limitata. Se le dimensioni dei dati sono grandi e se riscontri prestazioni delle query scarse, valuta la possibilità di eseguire lo scale up a un'istanza più grande.
Esegui il deployment dei pool di lettura e scarica le query di lettura nel pool di lettura
Se la tua applicazione esegue molte operazioni di scrittura e lettura, valuta la possibilità di eseguire il deployment di pool di lettura e di scaricare le query di lettura nel pool di lettura.
Per i workload di lettura impegnativi, aggiungi istanze del pool di lettura per trasferire il traffico di lettura dall'istanza principale.
Implementazione dell'applicazione
Utilizza tecniche di gestione delle connessioni efficaci.
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione.
Testa la risposta dell'applicazione ai failover.
Evita transazioni di grandi dimensioni.
Evita un numero elevato di sotto-transazioni.
Utilizza la versione più recente di Auth Proxy.
Utilizza pratiche di gestione delle connessioni efficaci
Utilizza pratiche di gestione delle connessioni efficaci, come il pooling delle connessioni e il backoff esponenziale.
L'utilizzo di tecniche di gestione delle connessioni efficaci migliora l'utilizzo delle risorse da parte dell'applicazione e ti aiuta a rispettare i limiti di connessione di AlloyDB.
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione, che possono verificarsi in qualsiasi momento durante il periodo di manutenzione.
Puoi simulare un aggiornamento della manutenzione eseguendo operazioni di scalabilità di Compute o aggiornando i flag statici di PostgreSQL, il che attiva la manutenzione con tempi di inattività ridotti (LDTM).
Durante LDTM, l'istanza non è disponibile per un breve periodo e le connessioni esistenti vengono interrotte. Il test di LDTM ti consente di comprendere meglio il modo in cui la tua applicazione gestisce la manutenzione pianificata e la velocità con cui il sistema può ripristinarsi.
Testare la risposta dell'applicazione ai failover
Testa la risposta dell'applicazione ai failover, che possono verificarsi in qualsiasi momento.
Puoi avviare manualmente un failover utilizzando la console Google Cloud , Google Cloud CLI o l'API. Per ulteriori informazioni, consulta la sezione Avvio del failover.
Evitare transazioni di grandi dimensioni
Mantieni le transazioni brevi e di piccole dimensioni. Se è necessario un aggiornamento di un database di grandi dimensioni, esegui l'aggiornamento in più transazioni più piccole anziché eseguirne una di grandi dimensioni.
Evitare un numero elevato di sotto-transazioni
Evita un numero elevato di sotto-transazioni in una transazione quando sono presenti transazioni a esecuzione prolungata.
In AlloyDB, l'esecuzione di una transazione in un blocco di errori PL/pgSQL crea le sottotransazioni della transazione corrispondenti al blocco di errori. Le prestazioni complessive del sistema peggiorano se il numero di subtransazioni supera 64 in presenza di transazioni a esecuzione prolungata.
Utilizzare la versione più recente del proxy di autenticazione
Se utilizzi il proxy di autenticazione AlloyDB, assicurati di utilizzare la versione più recente. Per saperne di più, vedi Mantenere aggiornato il client proxy di autenticazione.
Importazione ed esportazione di dati
Ripristina dai backup di Cloud SQL per PostgreSQL per la migrazione.
Velocizza le importazioni per le istanze di piccole dimensioni.
Ripristinare dai backup di Cloud SQL per PostgreSQL per la migrazione
Per facilitare la migrazione, consulta Eseguire la migrazione da Cloud SQL per PostgreSQL ad AlloyDB.
Per scoprire come eseguire la migrazione dei dati da Cloud SQL per PostgreSQL ad AlloyDB utilizzando la replica continua dei dati, consulta Database Migration Service per PostgreSQL ad AlloyDB.
Accelerare le importazioni per le istanze di piccole dimensioni
Quando importi set di dati di grandi dimensioni per istanze piccole, puoi aumentare temporaneamente la CPU e la RAM di un'istanza per migliorare le prestazioni.
Backup e ripristino
Proteggi i tuoi dati utilizzando le funzionalità AlloyDB appropriate.
Proteggi l'istanza e i backup da eliminazioni accidentali.
Proteggi i tuoi dati utilizzando le funzionalità AlloyDB appropriate
Utilizza backup, recupero point-in-time (PITR) ed esportazioni per ridondanza e protezione. Ognuno protegge da scenari diversi e si completano 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 si trovavano al momento del backup. Tuttavia, la funzionalità di backup di AlloyDB presenta alcune limitazioni. Se elimini l'istanza, vengono eliminate anche le copie di 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 ripristinarla da quel backup, nemmeno in una regione disponibile.
Il recupero point-in-time ti aiuta a recuperare un'istanza in un momento specifico. Ad esempio, se un errore causa una perdita di dati, puoi ripristinare un database nello stato in cui si trovava prima che si verificasse l'errore. Un recupero point-in-time crea sempre una nuova istanza; non puoi 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. Le esportazioni non sono interessate se elimini l'istanza. Inoltre, puoi esportare solo un singolo database o tabella, a seconda del formato di esportazione.
Proteggere l'istanza e i backup da eliminazioni accidentali
Per attivare la prevenzione dell'eliminazione accidentale predefinita, crea un'istanza AlloyDB utilizzando la console Google Cloud o Terraform.
Utilizza la funzionalità di esportazione di AlloyDB per esportare i dati per una protezione aggiuntiva. Utilizza Cloud Scheduler con l'API Cloud Scheduler per automatizzare la gestione delle esportazioni.
Per scenari più avanzati, utilizza Cloud Scheduler con Cloud Run functions per l'automazione.