我需要为同时拥有本地和远程数据库服务器的系统运行集成测试;我想在我的开发Mac上在不同的端口上安装两个PostgreSQL服务器。我通常使用Postgres.app - 这可以以某种方式配置为运行两个实例吗?
答案 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
弹出菜单中,您可以为虚拟机网络适配器选择以下网络类型之一(摘自在线帮助):
您可以使用自己的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年,当时应用可能还没有这个答案)
打开应用程序时,打开侧栏(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不同版本: