Alten Cluster starten nach Neuinstallation

Hi all,

ich hab ein zweites postgresql cluster auf einer externen Festplatte angelegt. Leider musste ich mein Ubuntu neu aufsetzen und suche nun nach einer Moeglichkeit das cluster auf der externen Festplatte zu re-aktivieren. Da ich noch einigermassen neu mit PostgreSQL bin, will ich nichts falsch machen, da die Daten wichtig sind. Erschwerend kommt dazu, dass das alte Cluster v9.1 ist, die neue Installation aber v9.3.

Meine erste Idee war, das Verzeichnis des alten clusters unter /etc/postgres/9.1 einfach nach /etc/postgres/9.3 der neuen Installation zu copieren und den postmaster neu zu starten. Wuerde mich allerdings wundern, wenn das so ginge.
Dann dachte ich an initdb, was ja aber alles neu anlegen und damit die alten Daten ueberschreiben wuerde oder nicht?

Kann mir jemand helfen?
Lowry

Willkommen bei PostgreSQL!

Meine erste Idee war, das Verzeichnis des alten clusters unter /etc/postgres/9.1 einfach nach /etc/postgres/9.3 der neuen Installation zu copieren und den postmaster neu zu starten. Wuerde mich allerdings wundern, wenn das so ginge.
Dann dachte ich an initdb, was ja aber alles neu anlegen und damit die alten Daten ueberschreiben wuerde oder nicht?

Kann mir jemand helfen?
Lowry

Nein, so nicht. Du mußt den alten Cluster, also das DB-System, mit der Version in Betrieb nehmen, mit der er erstellt wurde. Die internen Strunkturen ändern sich von Hauptversion zu Hauptversion, hier liegen 2 solcher Sprünge vor.

Also, entweder hast Du einen Dump der Daten, dann kannst den einspielen (mit psql oder pg_restore, je nach Format des Dumps), oder aber Du nimmst das mit einem 9.1 in Betrieb, sicherst die Daten via Dump und spielst diesen dann in 9.3, oder besser gleich 9.4, ein.

Hmm, hoffe, dass war nicht zu unfreundlich mich nicht vorzustellen. Also nochmal:

Hallo Community, bin ein Neuer und schicke mal nen Gruss in die Runde.

@akretschmer
Danke fuer die Antwort. Ich dachte mir schon, dass ich 9.1 wieder aufsetzen muss. Dann ist aber trotzdem die Frage: kann ich einfach die config files nach /etc/postgres/9.1 kopieren und neustarten oder muss ich das alte Cluster irgendwie registrieren? Oder anders gefragt: tut initdb noch was anderes als die Verzeichnisse und die config files anzulegen?
Off-topic Frage: ist es “das” oder “der” Datenbank-cluster auf Deutsch?

Danke nochmal,
Lowry

Du darfst initdb NICHT ausführen. Du brauchst die Binarys für 9.1 und startest das z.B. via /path/to/9.1/bin/pg_ctl -D /path/to/the/old/cluster

Die Configs (also postgresql.conf, pg_hba.conf, recovery.conf, …) liegen normalerweise dort, wo auch -D hinzeigt.

Wenn das läuft, dann machst einen Dump.

Und ja: bevor Du damit spielst, macht noch ein komplettes Backup! (ohne daß der DB-Server läuft)

Nice, danke fuer die schnelle Hilfe. Hoffe, es klappt so.

Denk bitte in Zukunft VOR dem Crash an Backups.