Vai al contenuto principale

Concetti — PostgreSQL

Architettura​

PostgreSQL su Hikube è un servizio gestito. Ogni cluster creato dalla console è un insieme di istanze PostgreSQL replicate, con failover automatico e streaming replication. Appartiene a un progetto e consuma la quota di tale progetto (CPU, memoria, storage).


Terminologia​

TermineDescrizione
Cluster PostgreSQLIstanza gestita creata dalla console, composta da un primary e da eventuali repliche.
ProgettoSpazio isolato che raggruppa le sue risorse e a cui è associata la quota.
PrimaryIstanza principale che accetta letture e scritture.
ReplicaIstanza in sola lettura, sincronizzata tramite streaming replication dal primary.
Instance presetProfilo di risorse (CPU, memoria) assegnato a ogni nodo del cluster.
Accesso esternoOpzione che espone il cluster su Internet tramite un indirizzo IP pubblico.
EstensioneModulo PostgreSQL (ad esempio pgcrypto, vector) attivato per database.
WALWrite-Ahead Log — registro delle transazioni PostgreSQL, base della replica.

Replica e alta disponibilità​

L'alta disponibilità si basa su:

  1. Streaming replication: le repliche ricevono i WAL in modo continuo dal primary
  2. Failover automatico: se il primary cade, una replica viene promossa automaticamente

Il numero di repliche si sceglie al momento della creazione, nel campo Number of replicas:

Valore propostoUtilizzo
1 (Standalone)Sviluppo, test
2 (High Availability)Produzione con uno standby
3 (Max High Availability)Produzione critica
avviso

Il numero di repliche non può essere modificato dopo la creazione (« The mode cannot be changed after creation »). Lo scelga in base alle sue esigenze di disponibilità. Per modificarlo, contatti il supporto.

La replica sincrona (quorum) non è proposta nella console; contatti il supporto.


Database, utenti e diritti​

Ogni cluster dispone di:

  • un database di sistema postgres, creato automaticamente e riservato alla piattaforma (vedere sotto);
  • i database che lei aggiunge, alla creazione o in seguito (scheda Databases), con le relative estensioni;
  • gli utenti che lei crea (scheda Users). Ogni utente riceve, database per database, uno dei due diritti seguenti:
    • Administrator (Admin): lettura e scrittura;
    • Read-only: solo lettura.

La password di un utente è generata dalla piattaforma e mostrata una sola volta, alla creazione o dopo una rotazione. Non è più consultabile in seguito: in caso di smarrimento, ne generi una nuova con Change Password.

Database di sistema​

postgres, template0 e template1 sono database di sistema, riservati alla piattaforma:

  • le procedure guidate degli utenti non li propongono, e su di essi non può essere attribuito alcun diritto;
  • la loro creazione viene rifiutata: « “postgres” is a system database: choose an application database. »;
  • nell'elenco dei database, Manage extensions e Delete database sono disattivati su un database di sistema: « System database: it can be neither changed nor deleted. »

Un utente che detiene già un diritto su un database di sistema lo conserva così com'è. In Manage Access, questo diritto viene mostrato bloccato, con un avviso: può rimuovere la riga, ma non modificarla. Attribuisca ai suoi utenti i diritti su database applicativi.

Regole di denominazione​

ElementoRegola
Nome del clusterDa 3 a 16 caratteri: lettere minuscole, cifre e trattini; inizia con una lettera, termina con una lettera o una cifra
Nome utenteDa 3 a 16 caratteri: lettere minuscole, cifre e trattini bassi (_); inizia con una lettera minuscola o un trattino basso. Nessun trattino (-).
Nome del databaseDa 1 a 54 caratteri: lettere minuscole, cifre, trattini bassi (_) e trattini (-); inizia con una lettera o un trattino basso, ma non con pg_

I nomi utente postgres, admin, root, owner, superuser, streaming_replica e quelli che iniziano con pg_ sono riservati.


Preset di istanza​

L'Instance preset definisce la capacità assegnata a ogni nodo del cluster. I preset riprendono le taglie delle macchine virtuali delle serie u1, s1 e m1: un preset ha le stesse risorse della VM con lo stesso nome. Fa fede l'elenco mostrato dalla procedura guidata:

PresetCPUMemoria
u1.medium14Gi
u1.large28Gi
u1.xlarge416Gi
u1.2xlarge832Gi
u1.4xlarge1664Gi
u1.8xlarge32128Gi
s1.small12Gi
s1.medium24Gi
s1.large48Gi
s1.xlarge816Gi
s1.2xlarge1632Gi
s1.4xlarge3264Gi
m1.large216Gi
m1.xlarge432Gi
m1.2xlarge864Gi
m1.4xlarge16128Gi
m1.8xlarge32256Gi

La procedura guidata non preseleziona alcun preset: ne scelga uno per proseguire. Ogni opzione indica le sue risorse, ad esempio « u1.medium — 1 CPU / 4Gi ». Se l'elenco non può essere caricato, la procedura guidata mostra « The preset list could not be loaded. Try again later or contact support. »

Un cluster creato con un vecchio preset (nano, micro, small, medium, large, xlarge o 2xlarge) lo conserva e funziona come prima: il modulo Edit lo mostra così com'è e lo salva senza modifiche. Se le risorse di un cluster sono state fissate al di fuori del suo preset, il modulo lo indica con la menzione « (override) ».

La definizione di risorse CPU/memoria libere (al di fuori dei preset) non è proposta nella console; contatti il supporto.


Accesso di rete​

  • Host interno: sempre assegnato, visualizzato nella zona Internal del riquadro Connection and Databases. Punta al primario ed è raggiungibile dalle VM e dai cluster Kubernetes dello stesso progetto, non da un altro progetto né da Internet.
  • Accesso esterno disattivato (impostazione predefinita): il cluster non è esposto su Internet. La zona External mostra Disabled.
  • Accesso esterno attivato: la piattaforma assegna un indirizzo IP pubblico, mostrato nella zona External. La porta è la porta PostgreSQL standard, 5432.

L'accesso esterno può essere attivato o disattivato dopo la creazione, tramite Edit. Il suo costo (indirizzo IP pubblico) è incluso nell'Estimated cost della procedura guidata.


Backup e ripristino​

I cluster PostgreSQL si salvano verso un bucket S3 del progetto e si ripristinano dalla scheda Backups della loro pagina, con il servizio di backup. I log delle transazioni sono archiviati in continuo tra due backup, il che permette di ripristinare il database a un istante preciso. Consulti Configurare i backup e Ripristinare un backup.


Quota e costo​

La procedura guidata di creazione mostra, già dal passaggio Configuration, l'Estimated cost (mensile e orario) e l'impatto del cluster sulla quota del progetto (CPU, memoria, storage). Il consumo tiene conto del preset, del numero di repliche e della dimensione del disco. Se il cluster supera la quota disponibile, il pulsante Next resta inattivo.

ParametroValore
Dimensione del discoDa 1 a 4.096 GB, entro il limite della quota di storage del progetto; dopo la creazione, solo aumento
Repliche1, 2 o 3

Per approfondire​