Как я могу запустить две копии PostgreSQL на Mac OS X?

Мне нужно запустить интеграционные тесты для системы, которая имеет как локальный, так и удаленный сервер баз данных; Я хотел бы, чтобы на моем dev Mac было два сервера PostgreSQL на разных портах. Я обычно использую Postgres.app - это можно как-то настроить для запуска двух экземпляров?

3 ответа

Решение

Просто вызовите initdb из двоичного каталога (/Applications/Postgres.app/Contents/Versions/latest/bin/initdb). Передайте --help, если хотите, но initdb нужен только каталог данных, поэтому:

initdb -D <dir>

После завершения перейдите в новый каталог, отредактируйте postgresql.conf и измените порт.

Тогда начинай

Виртуальные машины

Другой вариант - запуск каждого кластера (установки) Postgres внутри виртуальной машины на вашем Mac.

Parallels

Я сделал это с Parallels Desktop для Mac версий 9, 10 и 11. (Версия 12 является текущей, но я еще не пробовал с Postgres.)

Мне особенно нравится использовать ВМ для Postgres, поскольку эта серьезная база данных имеет тенденцию быть довольно тяжелой установкой, когда не используется Postgres.app, например, когда используются установщики, предоставляемые EnterpriseDB.com, в качестве любезности сообществу.

сетей

Вы можете настроить сеть в Parallels так, чтобы она была либо полностью изолирована, либо использовала сетевое удостоверение хоста Mac, либо присвоила виртуальной машине свой собственный IP-адрес и выступала в качестве отдельного компьютера в сети. выберите Configure… > Hardware > Network 1, в Source Во всплывающем меню вы можете выбрать один из следующих типов сети для сетевого адаптера виртуальной машины (описание взято из интерактивной справки):

  • Отключить
  • Общая сеть
    Выберите этот параметр, чтобы включить функцию преобразования сетевых адресов (NAT) для виртуальной машины. В этом случае ваша виртуальная машина будет совместно использовать любое сетевое соединение, которое в данный момент используется хост-компьютером.
  • Мостовая сеть
    Выберите этот параметр, чтобы разрешить виртуальной машине доступ к локальной сети и Интернету через один из сетевых адаптеров, установленных на главном компьютере. В этом случае виртуальная машина рассматривается как автономный компьютер в сети и должна быть настроена так же, как реальная. Вы можете выбрать физический адаптер, к которому будет подключен адаптер виртуальной машины, в списке под параметром "Мостовая сеть".
  • Сеть только для хоста
    Выберите этот параметр, чтобы разрешить виртуальной машине подключаться к главному компьютеру и виртуальным машинам, находящимся на нем, и сделать ее невидимой за пределами главного компьютера.

Вы можете настроить каждую ВМ со своим собственным IP-номером, в то время как внутри каждой Postgres используется один и тот же порт по умолчанию: 5432, Совет: используйте ping инструмент командной строки, чтобы убедиться, что гостевая и хостовая MacOS могут связаться друг с другом.

тестирование

Виртуальные машины могут помочь с тестированием.

Таким способом вы можете протестировать macOS, запустив старые или новые версии macOS в качестве гостя. Гостевая версия macOS не обязательно должна совпадать с хостом.

Аналогично, для тестирования вы можете установить разные версии Postgres на разных виртуальных машинах.

Вы можете сделать резервную копию одного файла, который представляет всю вашу виртуальную машину (сначала выключите ее). Каждый раз, когда вы хотите восстановить исходное состояние, замените текущий файл виртуальной машины новой копией резервной копии.

Другие виртуальные машины

Parallels - это всего лишь одно из трех успешных приложений для виртуальных машин, доступных для macOS (Mac OS X). Я ожидаю, что все три будут хорошо работать на сервере Postgres.

Apple теперь разрешает устанавливать последние версии macOS в качестве гостевой ОС на виртуальной машине, когда работает на Mac в качестве хоста. (Раньше не разрешалось много лет назад.) Подробности читайте в их лицензии.

Возможно, вам будет проще управлять этим, если вы установите два разных дистрибутива Postgresql. Выберите два из них на https://www.postgresql.org/download/macosx/

Если вы никогда не устанавливали Fink, Homebrew или Macports, я рекомендую выбрать Macports, поскольку он меньше мешает другим инструментам.

Используемый номер порта настраивается в postgresql.conf. Просто измените строку, которая говорит

порт = 5432

и перезапустите этот сервер PostgreSQL.

У PostgresApp есть такая возможность, хотя она и скрыта. (этот ответ опоздал на 3 года, тогда в приложении этого могло и не быть)

Ссылка для скачивания

Когда вы открываете приложение, откройте боковую панель (источник) и щелкните значок+значок, чтобы добавить еще один сервер. Вы можете выбратьname / version / port для каждого сервера.

Обязательно настройте инструменты CLI (источник), если вы еще этого не сделали.

sudo mkdir -p /etc/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

Если вы хотите иметь разные psql команд для каждого сервера, добавьте несколько полезных псевдонимов в свой ~/.profile:

# Name them whatever you want
alias "psql-project1"="psql -h localhost -p 5432"
alias "psql-project2"="psql -h localhost -p 5433"

По состоянию на 2020/03/30, на странице загрузки вы можете установить различные версии PostgresApp, которые поддерживают следующие версии:

  • Postgres.app с PostgreSQL 12.1
  • Postgres.app с PostgreSQL 10.11, 11.6 и 12.1
  • Postgres.app со всеми поддерживаемыми в настоящее время версиями PostgreSQL (12.1, 11.6, 10.11, 9.6.16, 9.5.20, 9.4.25)
Другие вопросы по тегам