====== 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 [[http://www.debian-administration.org/articles/91|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.