是否可以使用Postgresql的独立实例

jjb*_*jjb 10 windows sql-server postgresql

我想安装postgresql作为Windows应用程序的后端.

如果系统上尚未安装postgresql,这似乎没问题.

如果已经安装了postgresql,那么除非命令行参数包含现有安装的superpassword等,否则安装将失败.因为我可能永远不会知道任何预先存在的postgresql实例的超级密码或其他帐户详细信息,并且机器所有者可能也不会看起来这会阻碍在这种情况下安装postgresql的任何尝试.

我相信可以安装完全独立的sql server实例,但这对postgresql有用吗?

顺便说一句: 如果命令行确实包含正确的超​​级密码,那么安装似乎会覆盖现有的安装并忽略像--prefix等参数.在进行第二次安装之前,我使用init db创建了一个新的数据库集群,但忽略了这个新的集群?

Grz*_*ski 12

通常,您可以拥有多个独立的PostgreSQL实例.严格来说,它的数据库集群是分开的:

  • 数据目录
  • 配置(例如postgresql.conf,pg_hba.conf)
  • 侦听TCP/UDP端口(默认为5432+)
  • 所有者用户和超级用户角色
  • 区域设置和默认编码
  • 日志文件
  • postmaster服务器进程(在Windows postgres.exe上)

Debian具有易于使用的postgresql-common基础架构(pg_ctlcluster,pg_lsclusters,pg_createcluster,pg_dropcluster,包含SSL,日志轮换等),这是一个完美的例子.

编辑:

我发现这是相当容易在Windows下安装有第二,第三等相同版本的PostgreSQL的实例EnterpriseDB公司的安装,无需使用initdbpg_ctl(假设64位安装,可能需要使用Program Files (x86)32位安装):

  1. cmd以管理员权限打开(以管理员身份运行)
  2. 执行: cd "C:\Program Files\PostgreSQL\9.0\installer\server"
  3. 创建新的数据库集群(在每个步骤按Enter键): initcluster.vbs postgres postgres 12345 "C:\Program Files\PostgreSQL\9.0" "C:\Program Files\PostgreSQL\9.0\data2" 5433 DEFAULT
  4. 注册为Windows服务: startupcfg.vbs 9.0 postgres 12345 "C:\Program Files\PostgreSQL\9.0" "C:\Program Files\PostgreSQL\9.0\data2" postgresql-x64-9.0-2
  5. 运行新创建的服务postgresql-x64-9.0-2使用services.msc,你有第二个服务器

更改12345为PostgreSQL安装期间指定的密码.您不必使用data2目录,使用您喜欢的任何内容(但当然不是现有data目录).

  • 完美在步骤3的脚本末尾添加true.这是在较新的postgres版本中添加的ACL检查. (5认同)
  • 在第4步之后,它不会在服务列表中显示给我 (2认同)

Mil*_*dev 3

像这样的东西应该可以工作(如果没有,可能是错误):

postgresql-9.0.4-1-windows_x64.exe ^
  --mode unattended ^
  --prefix c:\postgres\9.0-second ^
  --servicename postgresql-x64-9.0-second ^
  --serviceaccount postgres2 ^
  --servicepassword <password> ^
  --serverport 5433 ^
  --superaccount postgres ^
  --superpassword <password>
Run Code Online (Sandbox Code Playgroud)

编辑:经过几次测试后,我相信使用一键安装程序创建同一版本的不同 Postgres 实例是不可能的。对不起。

OTOH 您始终可以使用initdb现有pg_ctl的安装来创建新实例。这并不像启动安装程序那么容易,但它是可行的。

  • 不幸的是,我观察到同样的事情 - 如果存在相同版本的现有安装,安装程序将忽略任何选项。 (2认同)
  • 我准备学习如何使用 initdb 等,但对我来说主要问题是我相信似乎需要了解预先存在的超级密码。我无法获得此信息,客户也可能不知道。我希望可以纯粹为我们的应用程序创建一个带有自己的超级密码的独立安装。因此,我认为 SQL-server Express 可能是更好的选择。我相信它允许安装完全独立的实例 (2认同)