Uruchamianie wielu wersji PostgreSQL na tym samym serwerze Ubuntu

12

Mam PostgreSQL 8.4 i 9.0 działające na tym samym serwerze (Ubuntu Lucid).

Zainstalowałem je oba poprzez apt-get (8.4 z domyślnymi źródłami pakietów i 9.0 po dodaniu ppa z https://launchpad.net/~pitti/+archive/postgresql ).

Kiedy uruchamiam polecenie takie jak „Createdb” z wiersza poleceń lub uruchamiam powłokę „psql”, w moim systemie domyślnie używana jest PostgreSQL wersja 8.4.

Jak więc zmusić te polecenia do używania PostgreSQL 9.0 zamiast 8.4?

młynek do kawy
źródło
Powiązane: serverfault.com/q/582499/95758
krlmlr

Odpowiedzi:

11

Zakładając, że Ubuntu robi to samo co Debian, wówczas twoje dwie instancje PostGreSQL będą działały na różnych portach.

Możesz łatwo sprawdzić pliki konfiguracyjne, aby zobaczyć, która wersja jest na którym porcie:

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433

Większość poleceń PostGreSQL ma opcję „-p ####” lub „--port = ####”, więc możesz użyć tej opcji, aby wybrać żądaną wersję.

Gagravarr
źródło
7

Użyj --clusteropcji np. (Zakładając, że oba klastry mają domyślną nazwę main):

psql --cluster 8.4/main
psql --cluster 9.0/main

Ogólne schematy to:

--cluster version/name      # for local connections
--cluster version/host:port # for TCP/IP connections

Aby wyświetlić listę wszystkich zainstalowanych klastrów (nazwa, port, status, katalog danych itp.) Użyj pg_lsclusterspolecenia.

Sprawdź man pg_wrapperwięcej informacji.

Grzegorz Szpetkowski
źródło
To jest genialne, dlaczego to nie jest w dokumencie psql?
MarHoff,
1
@MarHoff: To pg_wrapperrozszerzenie Debiana. Zasadniczo zawija psql(tj. Jest psqlsymbolicznym linkiem do pg_wrapperskryptu) polecenie z kilkoma nowymi opcjami ułatwiającymi obsługę wielu klastrów.
Grzegorz Szpetkowski
0

Możesz użyć, dpkg -L <packagename>aby zobaczyć, jakie pliki posiada dany pakiet. Uruchom go z pakietem postgresql 9 i sprawdź, gdzie przechowywana jest komenda utworzona dla tej wersji.

Większość poleceń postgresql działałaby w różnych wersjach z odpowiednim wyborem bazy danych według portu lub ścieżki, ale oczywiście nie dotyczy to uruchamiania skryptów i poleceń tworzenia.

Seth Robertson
źródło