database - PostgreSQL : How to create two instances in same window machine?

标签 database windows instance postgresql-9.1

我需要为我们的生产服务器添加额外的实例。

这可能吗?

从哪里开始?

在 Windows 服务器上使用 Postgresql 9.1

最佳答案

如果您已经拥有二进制文件,则可以通过运行 initdb 然后将该新实例注册为 Windows 服务来添加第二个实例(“集群”)。

(我不会在可执行文件的名称前添加它们的存储路径。您需要将 Postgres 安装的 bin 目录添加到系统范围的 PATH,使用完全限定的名称,或者简单地切换到 bin 目录以使其成为当前目录)

为此,打开命令行 (cmd.exe) 并使用 initdb 创建实例:

initdb -D c:\Data\PostgresInstance2 -W -A md5

-W 使 initdb 提示您输入要用作该实例的 super 用户的名称和密码 - 确保您记住您提供的用户名和密码。 -D 指定应在何处 创建集群。 不要c:\Program Files 下创建它。

实例(集群)初始化后,编辑 c:\Data\PostgresInstance2\postgresql.conf 以使用不同的端口,例如端口 = 5433。如果该实例应该可以从外部访问,您还需要调整 listen_addresses

您可以通过手动启动新实例来检查是否一切正常:

pg_ctl start -D c:\Data\PostgresInstance2

更改端口(并调整其他配置参数)后,您可以为新集群创建 Windows 服务:

pg_ctl register -N postgres2 -D c:\Data\PostgresInstance2

该服务将使用“本地网络帐户”执行,因此您必须确保数据目录的权限设置正确。

关于database - PostgreSQL : How to create two instances in same window machine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842725/

相关文章:

sql - pl/sql - 集合可以遍历列名吗?

Python 关闭一个闪存驱动器,如何启动 IDLE?

windows - 注册 comdlg32.dll 获取 Regsvr32 : DllRegisterServer entry point was not found

python - 如何统计自定义类的实例数?

multithreading - 我可以在单线程中创建多个 Lua VM 吗?

database - Django 项目中的每个应用程序是否都有自己的一组数据库表?如果是,可以共享这些表吗?

java - 如何管理数据库和Web应用程序之间的时区(本地时间的现有数据库)

java - Apache Derby 为我创建的具有有意义名称的索引提供了奇怪的名称

windows - 如何在 Windows Phone uWP 中的 Windows 磁贴中显示应用程序名称

objective-c - 在 Objective-c 中获取对象名称