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?

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


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.