Questo documento spiega come configurare Cloud SQL per PostgreSQL per l'utilizzo in produzione. Cloud SQL per PostgreSQL è un servizio RDBMS completamente gestito integrato con l'ecosistema Google Cloud. Cloud SQL per PostgreSQL offre una serie di funzionalità chiave funzionalità:
- Gestione di più applicazioni e utenti a livello globale tramite l'uso di Le funzionalità di sicurezza gestita di Google Cloud, tra cui VPC e la crittografia automatica dei dati at-rest e in transito.
- Supporta l'architettura ad alta disponibilità utilizzando l'architettura principale e in standby le istanze VM e il failover automatico tra di esse.
- Supporta carichi di lavoro di database distribuiti abilitando la lettura/scrittura separazione tra il nodo primario e le repliche di lettura nello stesso in un cluster di database.
- Supporta i backup automatici integrati con Cloud Storage e la manutenzione automatica del database.
- Supporta una serie di carichi di lavoro OLTP (Online Transactional Processing).
Deployment di un'istanza Cloud SQL per PostgreSQL
Puoi configurare un'istanza Cloud SQL per PostgreSQL in pochi passaggi utilizzando la console Google Cloud o Google Cloud CLI. Entrambi i metodi sono descritti qui.
Console
Nella console Google Cloud, vai alla pagina SQL>Istanze.
Fai clic su Crea istanza, quindi su Scegli PostgreSQL.
Nella pagina Crea un'istanza PostgreSQL, fornisci quanto segue dettagli:
- ID istanza: inserisci un nome per l'istanza. L'istanza nome è permanente e non può essere modificato in un secondo momento.
- Default user password (Password utente predefinita): scegli la postgres password utente come account amministratore predefinito. (puoi creare utenti aggiuntivi dopo il deployment dell'istanza PostgreSQL).
- Regione e Zona: seleziona una regione e una zona. È buona pratica eseguire il deployment dell'istanza PostgreSQL nella stessa regione dei servizi Google Cloud associati (ad esempio le applicazioni) o in prossimità geografica degli utenti per ridurre la latenza per l'elaborazione dei dati. Una volta selezionata una regione, non potrai modificarla in un secondo momento.
- Versione database: scegli la versione più recente o se hai bisogno di la versione più recente disponibile.
Fai clic su Crea per eseguire il deployment dell'istanza PostgreSQL. In alternativa, fai clic su Mostra opzioni di configurazione per impostare configurazioni aggiuntive.
Altre opzioni di configurazione:
Connettività: in genere, l'istanza PostgreSQL viene collegata alla rete tramite un indirizzo IP pubblico, un indirizzo IP privato e reti autorizzate. Le reti autorizzate sono connessioni consentite che puoi impostare per stabilire una connessione remota, ad esempio l'approvazione di una connessione da un indirizzo IP specifico di un client.
Tipo di macchina e archiviazione: scegli il tipo di macchina in base alle risorse allocate (vCPU, RAM), al tipo di archiviazione (SSD o HDD) e alla capacità di archiviazione. L'aumento della capacità di archiviazione aumenta anche supportata (MB/s) e gli IOP di lettura e scrittura per del database. Modifica la capacità di archiviazione in base ai requisiti previsti per la velocità effettiva del disco e le IOPS.
Backup automatici e alta disponibilità: utilizza la funzionalità di backup automatici, abilitata per impostazione predefinita, per definire l'intervallo di tempo in cui eseguire i backup automatici. Inoltre, l'opzione di recupero point-in-time, che utilizza log write-ahead, necessario anche per creare una replica di lettura. Questi log vengono aggiornati regolarmente e utilizzano spazio di archiviazione. Per evitare problemi di archiviazione imprevisti, ti consigliamo di attivare gli incrementi automatici dello spazio di archiviazione quando utilizzi il recupero in un determinato momento. L'alta disponibilità è disabilitata per impostazione predefinita (multizona). Per abilitare il failover automatico, seleziona Opzione Alta disponibilità (a livello di regione).
Flag: questa impostazione specifica il metodo Cloud SQL per il controllo delle impostazioni e dei parametri dell'istanza. È equivalente al file
postgresql.conf
di un'istanza PostgreSQL non gestita. Per un elenco completo, consulta la documentazione del prodotto. La modifica del valore di un flag o l'impostazione di un nuovo flag potrebbe richiedere il riavvio dell'istanza.Manutenzione: in questa sezione viene specificato il periodo di tempo preferito per l'esecuzione delle attività di manutenzione, tra cui correzioni di bug e upgrade delle versioni minori. Tieni presente che le operazioni di manutenzione richiedono in genere il riavvio dell'istanza e potrebbero causare un breve servizio e un'interruzione del servizio. Puoi registrarti per ricevere una notifica via email sugli eventi di manutenzione imminenti.
Etichette: in questa sezione definisci coppie chiave/valore per classificare l'istanza PostgreSQL, ad esempio:
gcloud
Crea l'istanza PostgreSQL:
gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 --zone=us-central1-a
Assegna una password per l'utente predefinito PostgreSQL (esempio di sintassi):
gcloud sql users set-password postgres \ --instance INSTANCE_NAME \ --password PASSWORD
Puoi specificare queste opzioni aggiuntive:
- Versione database: una delle versioni PostgreSQL supportate.
- Tipo di archiviazione:SSD o HDD come tipo di archiviazione.
- Capacità di archiviazione: le impostazioni di archiviazione iniziali per l'istanza.
- Aumento automatico dello spazio di archiviazione: automazione di Cloud SQL per l'aggiunta spazio di archiviazione aggiuntivo quando lo spazio libero si sta esaurendo.
- Alta disponibilità: alta disponibilità di Cloud SQL.
- Backup automatici:la finestra temporale di inizio per i backup.
- Recupero point-in-time: recupero point-in-time e logging write-ahead.
- Periodo di manutenzione: una finestra di un'ora in cui Cloud SQL può e manutenzione in modo invasivo.
- Tempi di manutenzione: i tempi preferiti per eseguire gli aggiornamenti sull'istanza PostgreSQL. Puoi specificare anteprima per gli aggiornamenti precedenti o produzione per quelli successivi.
- Flag di database: i flag di database PostgreSQL per il controllo impostazioni e parametri.
Il seguente comando
gcloud
crea un'istanza Cloud SQL per PostgreSQL con alcune opzioni aggiuntive:gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 \ --zone=us-central1-a \ --database-version=POSTGRES_12 \ --storage-type=SSD \ --storage-size=100 \ --storage-auto-increase \ --availability-type=regional \ --backup-start-time=23:30 \ --enable-point-in-time-recovery \ --maintenance-window-day=sun \ --maintenance-window-hour=11 \ --maintenance-release-channel=production \ --database-flags max_connections=100
Per ulteriori informazioni, vedi Creazione di istanze.
Selezione istanza
La selezione o la definizione delle dimensioni dell'istanza comporta la scelta di un tipo di macchina in grado di supportare il tuo carico di lavoro Oracle® su Cloud SQL per PostgreSQL. I tipi di istanza sono suddivisi in due gruppi principali:
- Macchine con core condivisi: convenienti.
- Istanze con core dedicati: supportano diversi rapporti di vCPU e memoria.
Per ulteriori informazioni sui tipi di istanze, consulta Prezzi di Cloud SQL.
Per dimensionare l'istanza, inizia analizzando le risorse allocate
e utilizzata dal tuo database di origine. Puoi ottenere le impostazioni delle risorse del database Oracle dalla visualizzazione di sistema V$OSSTAT
o da un report AWR di Oracle (vedi gli esempi seguenti):
Memoria fisica (numero totale di byte di memoria fisica nel database server):
SQL> SELECT ROUND(MAX(VALUE)/1024/1024/1024) AS MEM_SIZE_GB
FROM V$OSSTAT
WHERE STAT_NAME = 'PHYSICAL_MEMORY_BYTES';
Memoria allocata:
SQL> SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER
WHERE NAME LIKE '%sga%' OR NAME LIKE '%memory%';
Core CPU (numero di core CPU disponibili):
SQL> SELECT VALUE FROM V$OSSTAT
WHERE STAT_NAME = 'NUM_CPU_CORES';
Core CPU (identificati da un'istanza Oracle tramite la vista V$LICENSE
):
SQL> SELECT CPU_CORE_COUNT_CURRENT FROM V$LICENSE;
Esempio di risorsa per report Oracle AWR (un report Oracle AWR può fornire ulteriori insight sul carico di lavoro di un'istanza Oracle specifica caratteristiche):
Quando disponi delle informazioni sulle risorse del database di origine, ti consigliamo scegliendo il tipo di istanza Cloud SQL più simile ed eseguendo e benchmark. I risultati dei benchmark ti aiutano a perfezionare la selezione delle istanze.
Configurazione dell'alta disponibilità
Per implementare una soluzione di disaster recovery, simile a Data Guard di Oracle, Cloud SQL per PostgreSQL offre funzionalità ad alta disponibilità che forniscono failover automatico dall'istanza principale del cluster all'istanza in standby. L'istanza in standby si trova in una zona diversa nella stessa regione dell'istanza dell'istanza principale. L'istanza in standby viene mantenuta sincronizzata replica sincrona tra i dischi permanenti delle istanze principali e in standby. Questo metodo assicura che tutte le modifiche ai dati dell'istanza principale vengano applicate anche standby.
In caso di errore principale, ad esempio un'istanza che non risponde o a livello di zona, Cloud SQL esegue un failover automatico. L'istanza principale viene monitorata tramite heartbeat, che si verificano a intervalli di 1 secondo, con un failover che si attiva dopo circa 60 secondi senza heartbeat ricevuti dall'istanza principale. A questo punto, l'istanza principale esegue il failover sull'istanza di standby, fornendo l'accesso ai dati alle applicazioni o ai client in modo trasparente, mentre le repliche di lettura esistenti rimangono operative. Tieni presente che a differenza di Active Data Guard, l'istanza in standby non è aperta per le letture fungendo da standby; con Cloud SQL, è possibile usare solo le repliche di lettura non sovraccarica le letture dall'istanza principale.
Puoi abilitare la funzionalità ad alta disponibilità (HA) di Cloud SQL per PostgreSQL quando crei l'istanza o per un'istanza PostgreSQL esistente. Ecco la procedura:
Console
- Nella pagina di creazione dell'istanza, fai clic su Mostra configurazione opzioni>Backup automatici e > Disponibilità, quindi seleziona il Opzione Alta disponibilità (a livello di regione).
- Per un'istanza PostgreSQL esistente, modifica l'istanza PostgreSQL successivo al passaggio precedente. Questa operazione richiede il riavvio del database.
Per avviare un failover a scopo di test, consulta la pagina Cloud SQL e fai clic su Failover.
Puoi attivare il failback nello stesso modo.
gcloud
Abilita l'alta disponibilità impostando il parametro
availability-type
suregional
:gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 \ --zone=us-central1-a \ --availability-type=regional
Verifica se in un'istanza PostgreSQL esistente è configurata l'alta disponibilità:
gcloud sql instances describe INSTANCE_NAME
Se l'output di questo comando include
availabilityType: REGIONAL
, l'HA è già abilitato. Se l'output includeavailabilityType: ZONAL
, l'alta disponibilità non è configurata e può essere abilitata utilizzando il metodo Comandopatch
:gcloud sql instances patch INSTANCE_NAME --availability-type REGIONAL
Avvia un test di failover dall'istanza principale a quella in standby:
gcloud sql instances failover PRIMARY_INSTANCE_NAME
Per eseguire il failover, esegui lo stesso comando di failover sulla nuova istanza principale.
Utenti e account amministratore
Due account utente PostgreSQL predefiniti vengono forniti con qualsiasi Cloud SQL per PostgreSQL
dell'installazione. Questi account sono postgres
e cloudsqlimportexport
.
Account postgres
L'account postgres
è l'account amministratore ed è equivalente agli utenti OracleSYS
o SYSTEM
in Cloud PaaS. Poiché Cloud SQL per PostgreSQL
è un servizio gestito, l'utente postgres
, a differenza di Oracle SYS
o SYSTEM
agli utenti, non può accedere ad alcune procedure e tabelle di sistema
sono necessari privilegi avanzati.
L'utente postgres
fa parte del ruolo cloudsqlsuperuser
e dispone delle
i seguenti attributi (privilegi): CREATEROLE
, CREATEDB
e LOGIN
.
Non ha gli attributi SUPERUSER
o REPLICATION
.
Account cloudsqlimportexport
L'account cloudsqlimportexport
viene creato con l'insieme minimo di privilegi
necessarie per le operazioni
di importazione ed esportazione di file CSV. Hai la possibilità di creare i tuoi
agli utenti di eseguire queste operazioni, ma in caso contrario, il valore predefinito
cloudsqlimportexport
utente utilizzato. L'utente cloudsqlimportexport
è un utente
sistema e non puoi utilizzarlo direttamente.
Gestione dell'account (aggiunta, eliminazione o modifica della password)
La gestione dell'account comporta la creazione di nuovi account utente, la modifica della password di un account esistente ed l'eliminazione di un account non più necessario. Tu
puoi eseguire queste operazioni sull'account tramite la console Google Cloud,
gcloud
o il client PostgreSQL.
Console
Elenca gli account esistenti dalla console Google Cloud: vai a Console Cloud SQL>Seleziona istanza PostgreSQL>Utenti.
Modificare la password dell'account o eliminare completamente l'account tramite facendo clic sull'icona con i tre puntini (Altro) accanto all'account.
Da questa schermata, puoi fare clic su Crea account utente per creare un nuovo utente PostgreSQL.
gcloud
Elenca gli account utente esistenti:
gcloud sql users list --instance=postgresql01
L'output è simile al seguente:
NAME HOST Postgres
Crea l'account utente
appuser
, imposta la password ed eliminaappuser
:gcloud sql users create appuser \ --instance=postgresql01 --password=PASSWORD gcloud sql users set-password appuser \ --host=% --instance=postgresql01 --prompt-for-password gcloud sql users delete appuser --instance=postgresql01
PostgreSQL
Esegui queste stesse azioni direttamente da un database PostgreSQL standard cliente, ad esempio:
postgres=> create user appuser with login password 'my_password'; postgres=> alter user appuser password 'my_password'; postgres=> drop user appuser;
Puoi configurare le autorizzazioni a livello di database PostgreSQL (ad esempio, da una tabella o una vista specifica) utilizzando
GRANT
/REVOKE
tramite il client PostgreSQL.
Monitoraggio e avvisi
Cloud Logging è lo strumento di logging principale di Google Cloud. Viene utilizzato per raccogliere e visualizzare una serie di log di monitoraggio per risorse come Cloud SQL per PostgreSQL.
Cloud Logging ti consente di visualizzare i log di Cloud SQL per PostgreSQL filtrati in base al livello di evento (ad esempio Critico, Errore o Avviso), al periodo di tempo dell'evento e alla ricerca di testo libero, come nello screenshot seguente.
Monitoraggio delle istanze di database PostgreSQL
I principali strumenti di monitoraggio di Oracle sono Enterprise Manager e Grid/Cloud Control. Questi strumenti consentono di monitorare in tempo reale le istanze di database a livello di di sessione e di istruzione SQL.
Cloud SQL per PostgreSQL offre funzionalità di monitoraggio paragonabili tramite la console Google Cloud. Da qui puoi ottenere una visualizzazione di riepilogo delle istanze del database, tra cui utilizzo della CPU, spazio di archiviazione, memoria operazioni di lettura/scrittura, connessioni attive, transazioni al secondo byte in entrata o in uscita. Tieni presente che Google Cloud Observability fornisce metriche di monitoraggio aggiuntive per Cloud SQL per PostgreSQL, ad esempio richieste di failover automatico e ritardo della replica tra la replica principale e le repliche di lettura.
Il seguente grafico di esempio mostra le transazioni al secondo per le ultime 6 ore:
Monitoraggio delle repliche di lettura
Puoi monitorare le repliche di lettura tramite la console Google Cloud nello stesso modo in cui monitori l'istanza principale. Esistono metriche specifiche per la verifica lo stato di replica tra l'istanza principale e quella di lettura. Queste metriche vengono utilizzate per compilare la pagina di panoramica delle istanze di replica di lettura nella console Google Cloud.
In alternativa, puoi controllare lo stato della replica dalla riga di comando:
gcloud sql instances describe REPLICA_NAME
Una terza opzione è controllare lo stato della replica tramite un client PostgreSQL. Il seguente comando PostgreSQL controlla lo stato della replica di lettura:
postgres=> \x on Expanded display is on. postgres=> select * from pg_stat_replication; -[ RECORD 1 ]----+------------------------------------------- pid | 74733 usesysid | 16388 usename | cloudsqlreplica application_name | PROJECT_ID:REPLICA_NAME client_addr | REPLICA_IP client_hostname | client_port | 41660 backend_start | 2020-09-28 06:59:38.783981+00 backend_xmin | state | streaming sent_lsn | 0/2939FFA8 write_lsn | 0/2939FFA8 flush_lsn | 0/2939FFA8 replay_lsn | 0/2939FFA8 write_lag | flush_lag | replay_lag | sync_priority | 0 sync_state | async reply_time | 2020-09-28 07:17:52.714969+00 postgres=>
Monitoraggio del database PostgreSQL
Questa sezione descrive alcune attività di monitoraggio aggiuntive considerate di routine per un DBA PostgreSQL.
Monitoraggio delle sessioni
Le sessioni Oracle vengono monitorate eseguendo query sulle viste di rendimento dinamico, note come viste "V$". Le visualizzazioni V$SESSION
e V$PROCESS
sono di uso comune
per ottenere insight in tempo reale sull'attività corrente dei database tramite SQL
istruzioni. Puoi monitorare l'attività delle sessioni in PostgreSQL in modo simile, sia tramite comandi PostgreSQL sia tramite istruzioni SQL.
PostgreSQL
pg_stat_activity
la visualizzazione dinamica fornisce informazioni dettagliate sulla sessione di database corrente
attività:
postgres=> \x on postgres=> select * from pg_stat_activity where backend_type = 'client backend' and usename != 'cloudsqladmin'; -[ RECORD 1 ]----+----------------------------------------------------------------------------------------------------- datid | 14052 datname | postgres pid | 74750 usesysid | 16389 usename | postgres application_name | psql client_addr | CLIENT_IP client_hostname | client_port | 51904 backend_start | 2020-09-28 07:01:30.214099+00 xact_start | 2020-09-28 07:28:48.982115+00 query_start | 2020-09-28 07:28:48.982115+00 state_change | 2020-09-28 07:28:48.982117+00 wait_event_type | wait_event | state | active backend_xid | backend_xmin | 88513 query | select * from pg_stat_activity where backend_type = 'client backend' and usename != 'cloudsqladmin'; backend_type | client backend postgres=>
Monitoraggio delle transazioni lunghe
Per identificare le transazioni in esecuzione prolungata che potrebbero causare problemi di rendimento, esegui una query sulla visualizzazione dinamica pg_stat_activity
. Puoi identificare i pod
di query applicando i filtri appropriati a colonne come query_start
e
state
.
Monitoraggio delle serrature
Puoi monitorare i blocchi del database tramite la visualizzazione dinamica pg_locks
, che fornisce informazioni in tempo reale su eventuali conflitti di blocco che possono causare problemi di prestazioni.
Avvisi
Puoi utilizzare gli avvisi oltre al monitoraggio e al logging. Puoi anche creare avvisi per le condizioni.
Scalabilità
Cloud SQL per PostgreSQL supporta la scalabilità sia verticale che orizzontale le opzioni di CPU e memoria disponibili.
Puoi scalare verticalmente aggiungendo più risorse a Cloud SQL ad esempio aumentando il numero assegnato all'istanza CPU e memoria. La velocità effettiva di rete dell'istanza dipende dai valori che scegli per la CPU e la memoria.
Cloud SQL supporta fino a 30 TB di spazio di archiviazione. L'aggiunta di capacità di archiviazione in genere aumenta la velocità effettiva e le IOPS del disco di un'istanza. Tieni presente che la velocità effettiva di rete di un'istanza Cloud SQL include le operazioni di lettura/scrittura dei dati (velocità effettiva del disco), nonché il contenuto di query, calcoli e altri dati non memorizzati nel database. È importante prendere in considerazione questi fattori quando esegui la scalabilità verticale dell'istanza Cloud SQL.
Esegui lo scale out orizzontalmente creando repliche di lettura. Le repliche di lettura consentono di scalare i carichi di lavoro di lettura su un ambiente Cloud SQL senza influire sulle prestazioni e sulla disponibilità in esecuzione in un'istanza Compute Engine.
Backup e ripristino
Esistono due metodi di backup del database per Cloud SQL per PostgreSQL: on demand e automatico. Puoi eseguire backup on demand in qualsiasi momento e questi vengono mantenuti fino a quando non li elimini. I backup automatici utilizzano una finestra di backup di 4 ore e vengono conservati per 7 giorni.
Puoi ripristinare i backup dei database Cloud SQL per PostgreSQL nello stesso modo sovrascrivendo i dati esistenti, oppure con una nuova istanza. Inoltre, Cloud SQL per PostgreSQL ti consente di ripristinare un database PostgreSQL specifico in un determinato momento purché il recupero point-in-time sia attivo e l'opzione di backup automatico sia abilitato.
Cloud SQL per PostgreSQL offre funzionalità di clonazione dei database. Il clone deve essere creato dall'istanza principale (ovvero non può essere creato da una replica). Puoi eseguire backup, ripristini e cloni dei database dalla console Google Cloud o dalla riga di comando gcloud.
Automazione
Puoi usare l'API Cloud SQL Admin per automatizzare completamente per l'amministrazione di un'istanza Cloud SQL per PostgreSQL. Cloud SQL L'API Admin è un'API REST per il controllo di diversi tipi di risorse come Istanze, Database, Utenti, Flag, Operazioni, SslCerts, Tiers BackupRuns. Per ulteriori informazioni, consulta la documentazione dell'API.
Passaggi successivi
- Scopri di più sugli account utente di Cloud SQL per PostgreSQL.
- Scopri di più su Cloud SQL per PostgreSQL per gli utenti Oracle:
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: terminologia e funzionalità
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: tipi di dati, utenti e tabelle
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: query, stored procedure, funzioni e trigger
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: sicurezza, operazioni, monitoraggio e registrazione
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.