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

如何在Mac OS X上运行两个PostgreSQL副本?,postgresql,postgresapp,Postgresql,Postgresapp,我需要为同时具有本地和远程数据库服务器的系统运行集成测试;我希望在我的dev Mac上有两台PostgreSQL服务器在不同的端口上。我通常使用Postgres.app-是否可以将其配置为运行两个实例?只需从二进制目录(/Applications/Postgres.app/Contents/Versions/latest/bin/initdb)调用initdb即可。Pass--如果愿意,请提供帮助,但initdb只需要一个数据目录,因此: initdb -D <dir> initd

我需要为同时具有本地和远程数据库服务器的系统运行集成测试;我希望在我的dev Mac上有两台PostgreSQL服务器在不同的端口上。我通常使用Postgres.app-是否可以将其配置为运行两个实例?

只需从二进制目录(/Applications/Postgres.app/Contents/Versions/latest/bin/initdb)调用initdb即可。Pass--如果愿意,请提供帮助,但initdb只需要一个数据目录,因此:

initdb -D <dir>
initdb-D
完成后,转到新目录,编辑postgresql.conf并更改端口


然后启动

如果安装两个不同的Postgresql发行版,您可能会发现这更容易管理。从中选择两个

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

要使用的端口号在postgresql.conf中配置。换句话吧

端口=5432

然后重新启动PostgreSQL服务器。

虚拟机 另一个选项是在Mac上的虚拟机内运行每个Postgres群集(安装)

相似 我已经在版本9、10和11中实现了这一点。(第12版是最新版本,但我还没有在Postgres上试用过。)

我特别喜欢为Postgres使用VM,因为当不使用时,这个严肃的数据库往往是一个相当重的安装,例如当使用作为对社区的礼貌时

网络 您可以将网络并行配置为完全隔离、共享主机Mac的网络标识,或为VM分配其自己的IP地址并充当网络上的独立计算机。选择
配置…
硬件
网络1
。在
Source
弹出菜单中,您可以为虚拟机网络适配器选择以下网络类型之一(说明摘自联机帮助):

  • 断开连接
  • 共享网络
    选择此选项可为虚拟机启用网络地址转换(NAT)功能。在这种情况下,虚拟机将共享主机当前使用的任何网络连接
  • 桥接网络
    选择此选项可允许虚拟机通过主机上安装的一个网络适配器访问本地网络和Internet。在这种情况下,虚拟机被视为网络上的独立计算机,并且应该以与真实计算机相同的方式进行配置。您可以在桥接网络选项下面的列表中选择虚拟机适配器将桥接到的物理适配器
  • 仅主机网络
    选择此选项可允许虚拟机连接到主机及其上的虚拟机,并使其在主机之外不可见
您可以使用自己的IP号码配置每个VM,而每个VM中的Postgre使用相同的默认端口
5432
。提示:使用命令行工具验证来宾和主机macOS是否可以相互联系

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

您可以通过这种方式测试macOS,以来宾身份运行较旧或较新版本的macOS。来宾macOS版本不必与主机相同

同样,您可以在不同的虚拟机中安装不同版本的Postgres以进行测试

您可以为代表整个VM的单个文件创建一个备份副本(当然,首先要关闭VM)。任何时候,如果要恢复到原始状态,请使用备份的新副本替换当前VM文件

其他虚拟机 Parallels只是macOS(MacOSX)上三款成功的虚拟机应用程序之一。我希望这三个都能很好地托管Postgres服务器


苹果现在确实允许在以Mac为主机的虚拟机上安装最新版本的macOS作为来宾操作系统。(以前很多年前不允许)详细信息。

PostgresApp确实有这种能力,尽管它是隐藏的。(这个答案迟了3年,当时应用程序可能没有这个答案)

打开应用程序时,打开侧栏()并单击
+
图标以添加另一台服务器。您可以为每台服务器选择
名称
/
版本
/
端口

如果尚未安装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
  • 带有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)

绝对是最简单的解决方案!