User Tools

Site Tools


doc:appunti:linux:sa:postgresql_cluster

PostgreSQL cluster

L'installazione dei pacchetti Debian (Lenny) di PostgreSQL gestisce la presenza di versioni differenti del database. Ad esempio si può installare la versione 8.2 insieme alla versione 8.1. Un elenco indicativo dei pacchetti da installare per una determinata versione:

  • postgresql-8.2
  • postgresql-doc-8.2
  • postgresql-client-8.2
  • postgresql-contrib-8.2
  • postgresql-8.2-postgis

Al termine dell'installazione si verificano le istanze in esecuzione:

postgres@paros:~$ pg_lsclusters
Version Cluster  Port Status Owner    Data directory                Log file
8.1     main     5432 online postgres /var/lib/postgresql/8.1/main  /var/log/postgresql/postgresql-8.1-main.log
8.2     main     5433 online postgres /var/lib/postgresql/8.2/main  /var/log/postgresql/postgresql-8.2-main.log

Conviene rivolgersi al server con il client psql della stessa versione. Se si esegue semplicemente psql, Debian sceglie la versione da avviare tramite il meccanismo delle alternatives. Per forzare una determinata versione si richiama il percorso completo:

/usr/lib/postgresql/8.2/bin/psql --port 5433

Debian mette a disposizione pg_wrapper. Ogni comando Postgres (psql, pg_dump, …) è in realtà un link a tale programma, che provvede a determinare a quale istanza del database connettersi. L'azione predefinita è quella di connettersi al database in ascolto sulla porta 5432. Ecco come indicare esplicitamente a quale cluster collegarsi:

psql --cluster 8.2/main

Upgrade

Teoricamente c'è un sistema per passare tutti i database dal vecchio 8.1 al nuovo 8.2. Si tratta di eliminare il nuovo 8.2 (che dovrebbe essere vuoto, poiché appena installato) e fare l'upgrade del vecchio 8.1:

su - postgres
pg_dropcluster --stop 8.2 main
pg_upgradecluster 8.1 main

Al termine il vecchio cluster 8.1 viene configurato per rispondere sulla porta TCP 5433 e quello nuovo sulla porta standard 5432. Il vecchio cluster inoltre viene disattivato impostando manual nel file /etc/postgresql/8.1/main/start.conf. Eventualmente ripristinare il valore di auto.

NOTA: come riporta anche la man page di pg_upgradecluster, alcune estensioni di PostgreSQL - tipo PostGIS - non si devono upgradare in questo modo, perché esistono funzioni oppure tabelle con metadati che devono essere ricreate o aggiornate in altro modo.

doc/appunti/linux/sa/postgresql_cluster.txt · Last modified: 2019/11/19 15:55 by niccolo