Configurazione di Cloud SQL per PostgreSQL per l'uso in produzione

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

  1. Nella console Google Cloud, vai alla pagina SQL>Istanze.

    Vai a Istanze

  2. Fai clic su Crea istanza, quindi su Scegli PostgreSQL.

  3. 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.
  4. Fai clic su Crea per eseguire il deployment dell'istanza PostgreSQL. In alternativa, fai clic su Mostra opzioni di configurazione per impostare configurazioni aggiuntive.

    Creazione di un'istanza PostgreSQL.

    • 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.

        Configurazione di una connessione di rete.

      • 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.

        Capacità di archiviazione di 10 GB.Capacità di archiviazione di 100 GB.

      • 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:

        definisci coppie chiave/valore che classificano l'istanza PostgreSQL.

gcloud

  1. Crea l'istanza PostgreSQL:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 --zone=us-central1-a
    
  2. 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):

Esempio di risorsa report Oracle AWR.

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

  1. 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).
  2. Per un'istanza PostgreSQL esistente, modifica l'istanza PostgreSQL successivo al passaggio precedente. Questa operazione richiede il riavvio del database.
  3. Per avviare un failover a scopo di test, consulta la pagina Cloud SQL e fai clic su Failover.

    Avvio del failover per i test.

    Puoi attivare il failback nello stesso modo.

gcloud

  1. Abilita l'alta disponibilità impostando il parametro availability-type su regional:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 \
        --zone=us-central1-a \
        --availability-type=regional
    
  2. 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 include availabilityType: ZONAL, l'alta disponibilità non è configurata e può essere abilitata utilizzando il metodo Comando patch:

    gcloud sql instances patch INSTANCE_NAME --availability-type REGIONAL
    
  3. 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

  1. Elenca gli account esistenti dalla console Google Cloud: vai a Console Cloud SQL>Seleziona istanza PostgreSQL>Utenti.

    Elenco degli account esistenti.

  2. 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.

    Modifica della password ed eliminazione di un account.

gcloud

  1. Elenca gli account utente esistenti:

    gcloud sql users list --instance=postgresql01
    

    L'output è simile al seguente:

    NAME       HOST
    Postgres
    
  2. Crea l'account utente appuser, imposta la password ed elimina appuser:

    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.

Visualizzazione dei log in Cloud Logging.

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:

Grafico delle transazioni al secondo per il
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