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


12

У мене 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?


Пов’язано: 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 = ####", тож ви можете використовувати її для вибору потрібної версії.


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?
MarHoff

1
@MarHoff: Розширення pg_wrapperDebian. По суті, вона обертає psql(тобто psqlсимволічне посилання на pg_wrapperскрипт) команду з декількома новими параметрами для полегшення обробки декількох кластерів.
Grzegorz Spepetkowski

0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.