在同一台机器上创建多个Postgres实例

npC*_*oob 19 postgresql

为了测试流复制,我想在同一台机器上创建第二个Postgres实例.这个想法是,如果它可以在测试服务器上完成,那么在两个生产服务器上设置它应该是微不足道的.

实例应使用不同的配置文件和不同的数据目录.我尝试按照这里的说明http://ubuntuforums.org/showthread.php?t=1431697但我还没弄明白如何让Postgres使用不同的配置文件.如果我复制init脚本,脚本只是同一Postgres实例的别名.

我正在使用Postgres 9.3和Postgres帮助页面说明在postgres命令行上指定配置文件.我不确定这意味着什么.我应该为此安装一些客户端吗?谢谢.

cac*_*que 21

我假设您可以使用postgresql实用程序.

创建群集

$ initdb -D /path/to/datadb1
$ initdb -D /path/to/datadb2
Run Code Online (Sandbox Code Playgroud)

运行实例

$ pg_ctl -D /path/to/datadb1 -o "-p 5433" -l /path/to/logdb1 start
$ pg_ctl -D /path/to/datadb2 -o "-p 5434" -l /path/to/logdb2 start
Run Code Online (Sandbox Code Playgroud)

测试流媒体

现在,您在端口5433和5434上运行了两个实例.它们的配置文件位于由指定的数据目录中initdb.调整它们以进行流复制.
您的默认安装在端口5432中保持不变.


小智 6

Steps to create New Server Instance on PostgreSQL 9.5

  1. On command prompt run:

    initdb -D Instance_Directory_path -U username -W
    
    Run Code Online (Sandbox Code Playgroud)

    (prompts for password)

  2. Once the new Instance Directory is created. Run command prompt as Administrator

    pg_ctl register -N service_name -D Instance_Directory_path -o "-p port_no"
    
    Run Code Online (Sandbox Code Playgroud)
  3. After the service is registered, start server

    pg_ctl start -D Instance_Directory_path -o "-p port_no"
    
    Run Code Online (Sandbox Code Playgroud)

  • `pg_ctl register` 仅在 **windows** 上。 (2认同)

sha*_*rez 5

在基于Debian的发行版上,您可以使用pg_createcluster代替initdb

$ pg_createcluster -u [user] -g [group] -d /path/to/data -l /path/to/log -p 5433
Run Code Online (Sandbox Code Playgroud)

pg_ctlcluster可以替代pg_ctl