Jak przeprowadzić migrację moich danych postgres z 8.4 do 9.1?

27

Zaktualizowałem moją maszynę deweloperską Ubuntu z 11.04 do 11.10. W tym czasie mój postgres został również zaktualizowany z 8.4 do 9.1.

Ale chyba straciłem wszystkie moje dane. Jeśli spojrzę, widzę, że moje dane dla 8.4 są w folderze /var/lib/postgres/8.4/maini moja nowa baza danych jest w /var/lib/postgres/9.1/main.

Jaki jest najlepszy sposób migracji moich danych do nowej wersji? Czy mogę po prostu skopiować pliki?

nathanvda
źródło

Odpowiedzi:

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

Na początku nie działało to dla mnie z dwóch powodów. Po pierwsze, postgresql-8.4 został w pewnym momencie odinstalowany, więc musiałem go ponownie zainstalować:

sudo apt-get install postgresql-8.4

Potem musiałem przejść do 8.4 postgresql.confi zmienić max_connectionsna 10. Potem zadziałało. Powinieneś być w stanie znaleźć plik conf na/etc/postgresql/8.4/main/postgresql.conf

Marconiusz
źródło
Na jednym komputerze wystarczały trzy górne linie. Z drugiej strony musiałem ponownie zainstalować 8.4, aby działało, jak powiedziałeś. Dziękuję za pomoc
nathanvda
Należy zauważyć, że skrypt „pg_upgradecluster” nie obsługuje przypadku, w którym należy dostarczyć użytkownika bazy danych. (Jeśli tak, to z pewnością nie mogę wymyślić, jak to zrobić.)
Pointy,
Jeśli Error: specified cluster is not runningpodczas zmiany spróbujesz ponownie max_connections, użyj pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou,
Redukcja max_connectionsnie działała dla mnie. Jako alternatywne rozwiązanie podane w komunikacie o błędzie zmniejszyłem shared_buffersdo 20 MB (z 200 MB), co działało dla mnie.
Serrano,
4

Po aktualizacji do 11.10 zainstalowano PostgreSQL 9.1, ale działającą wersją była 8.4.

Próbowałem:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Zgłoszono błąd:

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

Tak więc w innym oknie:

$ 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 ] 

I znowu:

pg_upgradecluster 8.4 main

Zgłoszono błędy związane z pgRouting. Zajęło to trochę czasu (całą noc!), Ale później baza danych została zaktualizowana do wersji 9.1. PostGIS został również zaktualizowany do wersji 1.5.3.

estibordo
źródło
Do twojej wiadomości, odkryłem, że robiąc „du -hs” w katalogu /var/lib/postgresql/9.1, a następnie porównując to z wyjściem tego samego polecenia w /var/lib/postgresql/8.4/, stwierdziłem, że mogę zmierzyć, ile zostało skopiowane na podstawie rozmiaru danych wyjściowych z tego polecenia.
Joe J
Wiem, że nie jest to omawiane pytanie. Ale natknąłem się na ten sam problem, co opisałeś. Pg_upgradecluster nie mógł zatrzymać starego klastra, ponieważ instancja Tomcat używała połączeń, a Postgres nie mógł ich zamknąć. Mam nadzieję, że to komuś pomoże.
bplayer