Wie migriere ich meine Postgres-Daten von 8.4 auf 9.1?


27

Ich habe meine Ubuntu-Entwicklungsmaschine von 11.04 auf 11.10 aktualisiert. Dabei wurde auch mein Postgres von 8.4 auf 9.1 aufgerüstet.

Aber ich scheine alle meine Daten verloren zu haben. Wenn ich nachschaue, kann ich sehen, dass sich meine Daten für 8.4 in einem Ordner befinden /var/lib/postgres/8.4/mainund meine neue Datenbank in /var/lib/postgres/9.1/main.

Wie kann ich meine Daten am besten auf die neue Version migrieren? Kann ich die Dateien einfach kopieren?

Antworten:


27
su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Das hat bei mir zunächst aus zwei Gründen nicht geklappt. Erstens war postgresql-8.4 irgendwann unkristallisiert, also musste ich es neu installieren:

sudo apt-get install postgresql-8.4

Dann musste ich in die 8.4 postgresql.confwechseln und max_connectionsauf 10. Dann hat es geklappt. Sie sollten in der Lage sein, die conf-Datei unter zu finden/etc/postgresql/8.4/main/postgresql.conf


Auf einem Computer waren die oberen drei Zeilen ausreichend. Andererseits musste ich 8.4 neu installieren, damit es funktioniert, wie Sie sagten. Danke für deine Hilfe.
Nathanvda

Es ist zu beachten, dass das Skript "pg_upgradecluster" nicht den Fall behandelt, in dem der Datenbankbenutzer angegeben werden muss. (Wenn ja, kann ich nicht herausfinden, wie man es bereitstellt.)
Pointy

Wenn Sie Error: specified cluster is not runningnach dem Ändern erneut versuchen max_connections, verwenden Sie pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou

Reduzieren max_connectionshat bei mir nicht funktioniert. Als alternative Lösung, die durch die Fehlermeldung bereitgestellt wurde, reduzierte ich mich auf shared_buffers20 MB (von 200 MB), was für mich funktionierte.
Serrano

4

Nach dem Upgrade auf 11.10 wurde PostgreSQL 9.1 installiert, die aktuelle Version war jedoch 8.4.

Ich habe es versucht:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Es hat den Fehler gemeldet:

Stopping old cluster...
pg_ctl: servidor não desligou
Error: Could not stop old cluster

Also, in einem anderen Fenster:

$ sudo service postgresql-8.4 stop
 * Stopping PostgreSQL 8.4 database server                               [ OK ] 
jgr@cagliari:~$ sudo service postgresql-8.4 start
 * Starting PostgreSQL 8.4 database server                               [ OK ] 

Und dann nochmal:

pg_upgradecluster 8.4 main

Es wurden Fehler im Zusammenhang mit pgRouting gemeldet. Es hat eine Weile gedauert (die ganze Nacht!), Aber danach wurde die Datenbank auf 9.1 aktualisiert. PostGIS wurde auch auf 1.5.3 aktualisiert.


Zu Ihrer Information, ich habe festgestellt, dass ich ein "du -hs" im Verzeichnis /var/lib/postgresql/9.1 mache und dieses dann mit der Ausgabe des gleichen Befehls in /var/lib/postgresql/8.4/ vergleiche Anhand der von diesem Befehl ausgegebenen Größe können Sie abschätzen, wie viel kopiert wurde.
Joe J

Ich weiß, das ist nicht die Frage, die diskutiert wird. Aber ich bin auf dasselbe Problem gestoßen, das Sie beschrieben haben. Der Grund, warum pg_upgradecluster den alten Cluster nicht stoppen konnte, war, dass eine Tomcat-Instanz die Verbindungen verwendete und Postgres sie nicht schließen konnte. Hoffe das hilft jemandem.
Spieler

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.