Назад | Перейти на главную страницу

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

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

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

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

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

Предположим, что 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 = ####», поэтому вы можете использовать его для выбора нужной версии.

Использовать --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 Чтобы получить больше информации.

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

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