如何在Mac OS X上运行两个PostgreSQL副本?

时间:2016-08-26 17:14:56

标签: postgresql postgresapp

我需要为同时拥有本地和远程数据库服务器的系统运行集成测试;我想在我的开发Mac上在不同的端口上安装两个PostgreSQL服务器。我通常使用Postgres.app - 这可以以某种方式配置为运行两个实例吗?

4 个答案:

答案 0 :(得分:3)

只需从二进制目录(/Applications/Postgres.app/Contents/Versions/latest/bin/initdb)调用initdb即可。如果你愿意,传递--help,但initdb只需要一个数据目录,所以:

initdb -D <dir>

完成后,转到新目录并编辑postgresql.conf并更改端口。

然后启动

答案 1 :(得分:1)

虚拟机

另一种选择是在Mac上的虚拟机中运行每个Postgres群集(安装)。

平行

我已经使用Parallels Desktop For Mac版本9,10和11完成了此操作。(版本12是最新的,但我还没有尝试使用Postgres。)

我特别喜欢使用VM for Postgres,因为这个严肃的数据库在不使用Postgres.app时往往是一个相当重量级的安装,例如当使用installers provided by EnterpriseDB.com作为社区礼貌时。

联网

您可以将Parallels中的网络配置为完全隔离,共享主机Mac的网络标识,或者为VM分配其自己的IP地址,并充当网络上的单独计算机。选择Configure…&gt; Hardware&gt; Network 1。在Source弹出菜单中,您可以为虚拟机网络适配器选择以下网络类型之一(摘自在线帮助):

  • 断开
  • 共享网络
    选择此选项可为虚拟机启用网络地址转换(NAT)功能。在这种情况下,您的虚拟机将共享主机当前使用的任何网络连接。
  • 桥接网络
    选择此选项可允许虚拟机通过主机上安装的某个网络适配器访问本地网络和Internet。在这种情况下,虚拟机被视为网络上的独立计算机,应该以与真实计算机相同的方式进行配置。您可以在“桥接网络”选项下方的列表中选择将桥接虚拟机适配器的物理适配器。
  • 仅限主机的网络
    选择此选项可允许虚拟机连接到主机和驻留在其上的虚拟机,并使其在主机外部不可见。< / LI>

您可以使用自己的IP编号配置每个VM,而每个VM中的Postgres使用相同的默认端口5432。提示:使用ping命令行工具验证来宾和主机macOS是否可以互相访问。

测试

虚拟机可以帮助进行测试。

您可以通过这种方式测试macOS,将旧版本或较新版本的macOS作为访客运行。 guest macOS版本不必与主机相同。

同样,您可以在不同的VM中安装不同版本的Postgres用于测试目的。

您可以制作代表整个VM的单个文件的备份副本(当然首先关闭VM)。只要您想要恢复到原始状态,请使用备份的新副本替换当前VM文件。

其他虚拟机

Parallels只是可用于macOS(Mac OS X)的三个成功虚拟机应用程序之一。我希望这三个都可以很好地托管Postgres服务器。

Apple在Mac上作为主机运行时,现在允许在虚拟机中安装最新版本的macOS作为来宾操作系统。 (多年前以前不允许这样做。)Read their license了解详情。

答案 2 :(得分:0)

如果您安装两个不同的Postgresql发行版,您可能会发现这更容易管理。在https://www.postgresql.org/download/macosx/

中选择其中两个

如果你从未安装过Fink,Homebrew或Macports,我建议选择Macports,因为它对其他工具的干扰较小。

要使用的端口号在postgresql.conf中配置。只需更改

所示的行

port = 5432

并重新启动PostgreSQL服务器。

答案 3 :(得分:0)

PostgresApp确实具有此功能,尽管它是隐藏的。 (这个答案迟到了3年,当时应用可能还没有这个答案)

Download Link

打开应用程序时,打开侧栏(source),然后单击+图标以添加另一台服务器。您可以为每个服务器选择name / version / port

如果尚未安装,请确保设置CLI工具(source)。

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不同版本:

  • 带有PostgreSQL 12.1的Postgres.app
  • 带有PostgreSQL 10.11、11.6和12.1的Postgres.app
  • Postgres.app,具有所有当前受支持的PostgreSQL版本(12.1、11.6、10.11、9.6.16、9.5.20、9.4.25)