PostgreSQL 的第二实例安装?

Das*_*ash 1 postgresql installation

Stack Overflow 上发布的原始问题相关。

有兴趣使用 C# 应用程序(适用于 Windows)分发 PostgreSQL 的副本。但是,尝试了解应如何处理以下情况:

  • PostgreSQL 已安装在用户系统上

根据我的理解,应该可以安装 PostgreSQL 的第二个实例以在同一计算机系统上同时运行(作为不同的服务,绑定到不同的 TCP 端口#?)。然而,关于如何完成此操作的最接近的答案可以在这里找到,但它并没有真正提供很多细节。

到目前为止,在我的测试环境 (VM) 中,我有一个 Ver.1 实例。12 PostgreSQL安装在默认目录中C:\Program Files\PostgreSQL\12

我是否正确地理解我应该复​​制目录的所有内容C:\Program Files\PostgreSQL\12并复制/粘贴到不同的目录(例如C:\Program Files\PostgreSQL\Test12

然后,运行pg_ctl register,但是有什么选项呢?

然后,我应该跑吗pg_ctl start

在完成这一切之前,是否需要考虑任何事项?

小智 5

您不需要两次二进制文件,只需创建第二个数据目录(也称为“集群”)。

下面在 下创建一个新的数据目录c:\ProgramData\pgdata2。我强烈建议不要数据目录放在下面c:\Program Files(这是我停止使用 EntpriseDB 安装程序的原因之一,因为它总是建议这样做)

"C:\Program Files\PostgreSQL\12\bin\initdb" -D "c:\ProgramData\pgdata2" 
Run Code Online (Sandbox Code Playgroud)

然后编辑c:\ProgramData\pgdata2\postgresql.conf并更改 的值port,例如

port = 5335
Run Code Online (Sandbox Code Playgroud)

然后您可以注册新的Windows服务并在注册过程中提供数据目录:

pg_ctl register -N other-postgres -D "c:\ProgramData\pgdata2"
Run Code Online (Sandbox Code Playgroud)

服务注册后,您可以使用以下命令启动它net start

pg_ctl register -N other-postgres -D "c:\ProgramData\pgdata2"
Run Code Online (Sandbox Code Playgroud)