Jak zaktualizować PostgreSQL z wersji 8.4 do 9.4?

18

Chcę zaktualizować mój PostgreSQL z wersji 8.4 do 9.4 .

Dokumentacja nie jest jasne do mnie.

  1. Czy utracę stare bazy danych, jeśli dokonam aktualizacji?
  2. Jak mogę wykonać kopię zapasową moich starych baz danych, jeśli mam je utracić po aktualizacji?
  3. Jak mogę zaktualizować mój psql?

Mój PostgreSQL działa na serwerze CentOS 6.6 .

Alex Jolig
źródło
Szczerze mówiąc, opis jest bardzo jasny na połączonej stronie. Wykonanie zrzutu oznacza, że ​​masz zrzut dla przypadku, gdy coś nie działa. Oznacza to również, że go nie stracisz. Ponadto na tej stronie znajduje się link wskazujący sposób instalacji nowszej wersji - na przykład w Ubuntu istnieje postgresql-client-9.4pakiet, który zawiera psql.
dezso
@dezso Więc jeśli odinstaluję psql 8.4 i przejdę do wersji 9.4, stracę moje stare bazy danych?
Alex Jolig,
3
Jeśli zrobisz ich zrzut, to nie. W każdym razie powinieneś mieć regularne kopie zapasowe testowane pod kątem możliwości odzyskania, więc nie powinno to stanowić żadnego problemu. Ponadto, jeśli zdecydujesz się na użycie pg_upgrade, zachowa twoje bazy danych - ale w tym przypadku konieczne jest również wykonanie kopii zapasowej.
dezso
How can I backup my old databases if” - nie ma, jeśli . Twoje bazy danych prawie na pewno będą w porządku po aktualizacji, ale zawsze powinieneś mieć nowe (najlepiej przetestowane) kopie zapasowe podczas wykonywania takiej operacji w przypadku nieoczekiwanych problemów (załóż najgorsze: odcięcie zasilania lub inna awaria sprzętowa może częściowo pozostawić w pozycji, z której trudno jest przetoczyć się do tyłu lub do przodu). W zależności od regularnego planu tworzenia kopii zapasowych może nie być konieczne wykonywanie dodatkowych kopii zapasowych.
David Spillett

Odpowiedzi:

25

W ten sposób rozwiązałem mój problem.

Uaktualnij Postgresql 8.4 do 9.4 w Centach

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

Kopia zapasowa danych

 7. su - postgres

 8. pg_dumpall > dump.sql

Przywróć dane

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

Skonfiguruj dostęp do sieci

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

Usuń PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql
Alex Jolig
źródło
3
Nie jestem pewien, dlaczego odrzuciłeś moją edycję jako „czytelność szkód”. W rzeczywistości sprawia, że ​​polecenia są łatwiejsze do skopiowania,
nhahtdh
1
Właśnie zrobiłem aktualizację z wersji 9.2 do 9.6 przy użyciu tej metody i zadziałało. Dzięki !
EisenHeim,
Myślę, że nie można użyć programu pgdump do migracji bazy danych, na przykład z terabajtami danych. Czy jest na to inny sposób?
deFreitas
Czy dla pierwszego polecenia „Yum Install PG9.4” jest to odpowiednia wielka litera dla wszystkiego?
Dave
1
@deFreitas Jestem trochę spóźniony, ale możesz go użyć, pg_upgradejeśli aktualizujesz z> = 8.4 i jeśli używasz tego samego serwera. pg_upgradejest przydatny w takich przypadkach i naprawdę szybciej: na Ubuntu 18 zajęło mi mniej czasu dokonywania pg_upgradeniż pg_dumpdo przywrócenia bazy danych 1GB. Wadą jest to, że musisz zainstalować i uruchomić 2 wersje postgres na tym samym komputerze (oczywiście słuchając różnych portów).
EAmez
3

service postgresql-9.4initdb nie działał dla mnie, musiałem użyć sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb( tutaj ).

Dzięki za wspaniałe instrukcje mogłem bez problemu zaktualizować wersję z 9.2 do 9.4, mimo że musiałem ponownie skonfigurować mój pg_hba.confplik, to było trywialne.

Jeff
źródło
1

Lepszym rozwiązaniem niż połączenie pojedynczego pliku binarnego psql postgresql94 z binem / usr / (local /) jest użycie systemu alternatyw:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

Który tworzy linki plików binarnych, mans, confs, ... postgresql94 do domyślnych katalogów dla CentOS.

Michal Michaláč
źródło