PostgreSQL: mehrere Instanzen auf einem Rechner

Nach längerer Pause heute mal etwas ganz Spezielles: wie bekomme ich mehrere PostgreSQL Datenbank-Instanzen auf einem Rechner zum Laufen?!

Die Suche im Internet offenbarte zuerst eine Lösung mit Anpassen der Start/Stop-Skripte, was ich nicht sonderlich "professionell" fand. Kurz darauf stieß ich auf die im DEB-Paket enthaltenen Skripte für die Clusterverwaltung. Bingo! Das war genau das wonach ich suchte. Die von der Paketverwaltung gemanagten Pakte werden hierbei nicht zerbrochen.

Nun aber mal los:

sudo apt-get install postgresql

Hiermit wird PostgreSQL und alle notwendigen Pakete installiert. Aktuell ist die Version 8.3.

Die Default-Konfiguration befindet sich unter /etc/postgresql/8.3/main. Diese ist so ganz in Ordnung und muß nicht angepaßt werden, da ich für Entwicklungszwecke mich nur von localhost verbinde.

Jetzt fehlt uns noch die zweite Instanz, welche Ihre Daten-Files aufgrund der zu erwartenden Größe auf einer externe Festplatte haben soll. Die externe Platte wurde mit ext2 formatiert. Bei FAT32 gab es einen häßlichen Fehler:

install: cannot change owner and permissions of „/media/lacie/pg-data“: Operation not permitted
Error: could not create data directory; you might need to run this program with root privileges

Grund ist hier, dass FAT32 keine Linux-Berechtigungen abbilden kann.

Da wir ja nun wissen, dass wir nicht FAT32 nehmen dürfen, haben wir eine "richtige" Platte und können los legen:

compuscitor@schlepptop:~$ sudo pg_createcluster -d /media/lacie/pg-data -p 5433 --start-conf=manual 8.3 big

Was passiert hier? Wir legen einen neuen Cluster mit dem Namen big an, welcher auf Port 5433 läuft und seine Daten in /media/lacie/pg-data ablegen soll. Desweiteren soll er nicht automatisch starten, sondern nur von Hand (manual), da die externe Festplatte ja nicht immer angesteckt ist.

Der neue Cluster wird mittel pg_ctlcluster gestartet:

sudo -u postgres pg_ctlcluster 8.3 big start

Beim Versuch den neuen Cluster über den Port aufzurufen, kommt es zu einem Fehler:

compuscitor@schlepptop:~$ sudo -u postgres psql -p 5233 postgres psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5233"?

Eine Verbindung zu einem Cluster wird so aufgebaut:

sudo -u postgres psql --cluster 8.3/big postgres

 


Quellen:

Go Back



Comment

Get Ubuntu!

Kategorien

Tags