Запуск нескольких версий PostgreSQL на одном сервере Ubuntu

12

У меня PostgreSQL 8.4 и 9.0 работают на одном сервере (Ubuntu Lucid).

Я установил их оба через apt-get (8.4 с исходными кодами пакетов по умолчанию и 9.0 после добавления ppa из https://launchpad.net/~pitti/+archive/postgresql ).

Когда я запускаю команду, такую ​​как «createb», из командной строки или запускаю оболочку «psql», в моей системе по умолчанию используется версия 8.4 PostgreSQL.

Итак, как заставить эти команды использовать PostgreSQL 9.0 вместо 8.4?

Кофемолка
источник
Связано: serverfault.com/q/582499/95758
krlmlr

Ответы:

11

Предполагая, что Ubuntu делает то же самое, что и Debian, ваши два экземпляра PostGreSQL будут работать на разных портах.

Вы можете легко проверить файлы конфигурации, чтобы увидеть, какая версия на каком порту:

$ 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

Большинство команд PostGreSQL выбирают опцию «-p ####» или «--port = ####», так что вы можете использовать ее для выбора нужной версии.

Gagravarr
источник
7

Используйте --clusterпараметр, например (при условии, что оба кластера названы основными по умолчанию):

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

Общими схемами являются:

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

Для просмотра списка всех установленных кластеров (имя, порт, статус, каталог данных и т. Д.) Используйте pg_lsclustersкоманду.

Проверьте man pg_wrapperдля получения дополнительной информации.

Гжегож Шпетковски
источник
Это замечательно, почему это не в psql doc?
MarHoff
1
@MarHoff: pg_wrapperрасширение Debian. По сути, он psqlвключает (то есть psqlсимволическую ссылку на pg_wrapperскрипт) команду с несколькими новыми опциями, облегчающими обработку нескольких кластеров.
Гжегож Шпетковски
0

Вы можете использовать, dpkg -L <packagename>чтобы увидеть, какие файлы принадлежат конкретному пакету. Запустите его с пакетом postgresql 9 и посмотрите, где хранилась команда createb для этой версии.

Большинство команд postgresql работают в кросс-версии с соответствующим выбором базы данных по порту или пути, но это, конечно, не относится к сценариям запуска и командам создания.

Сет Робертсон
источник